
ChatGPTにARUDINOで動作
するモールス符号発生スケッチを作
って貰いました。
音は圧電ブザーに出力しました。
小さなアンプをD9につないでも同
じく音がでました。
なんか、思い通りに行くと嬉しい。
最初はアナログの端子に1000hz
を出して貰いましたが、ChatGPT
曰く ディジタルの9番ピンにPWMで
出力するとのことでしたので、変更して
貰いました。
スイッチを押すとモールスが流れるよう
にしました。
GPSは位置情報を表示させるの段階で
トラブっております。OLEDに上手く
表示させることが出来ません。OLED
の初期化のエラーと表示されます。
なんだろうな? 良く分かりません。
と言うことで、音で確認出来る遊び
に移行しております。
GPSは一時お休み。
YOUTUBEに上げました。
https://www.youtube.com/shorts/Vcxx3HYtxGA
D7がアースに接続されたら、モール
スの音を出すことにしました。
arudinoに内蔵プルアップ抵抗があるそ
うです。(ChatGPT情報)
スケッチは下記のとおりとなります。
試してみる場合はコールサインは
変更して下さい。
CQが3回
DEが1回
CLが3回(CLはコールサイン)
Kが1回となります。
ーーーーーーーーーーーーーーーーーー
const int pwmPin = 9; // PWM出力ピン(D9)
const int switchPin = 7; // スイッチ入力ピン(D7)
void setup() {
pinMode(pwmPin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); // プルアップ抵抗を有効にする
}
void loop() {
if (digitalRead(switchPin) == LOW) { // スイッチが押されたら(GNDに接続されたら)
for (int i = 0; i < 3; i++) {
sendMorse("CQ");
delay(300);
}
sendMorse("DE");
delay(300);
for (int i = 0; i < 3; i++) {
sendMorse("JA7OVC");
delay(300);
}
sendMorse("K");
}
}
void sendMorse(const char* text) {
const int dotDuration = 100; // ドットの長さ(ミリ秒)
const int dashDuration = dotDuration * 3;
const int spaceDuration = dotDuration;
const int letterSpace = dotDuration * 3;
const int wordSpace = dotDuration * 7;
for (int i = 0; text[i] != '\0'; i++) {
switch (text[i]) {
case 'C': playMorse("-.-."); break;
case 'Q': playMorse("--.-"); break;
case 'D': playMorse("-.."); break;
case 'E': playMorse("."); break;
case 'J': playMorse(".---"); break;
case 'A': playMorse(".-"); break;
case '7': playMorse("--..."); break;
case 'O': playMorse("---"); break;
case 'V': playMorse("...-"); break;
case 'K': playMorse("-.-"); break;
}
delay(letterSpace);
}
}
void playMorse(const char* morse) {
const int dotDuration = 100;
for (int i = 0; morse[i] != '\0'; i++) {
if (morse[i] == '.') {
tone(pwmPin, 1000);
delay(dotDuration);
} else if (morse[i] == '-') {
tone(pwmPin, 1000);
delay(dotDuration * 3);
}
noTone(pwmPin);
delay(dotDuration);
}
}
const int switchPin = 7; // スイッチ入力ピン(D7)
void setup() {
pinMode(pwmPin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); // プルアップ抵抗を有効にする
}
void loop() {
if (digitalRead(switchPin) == LOW) { // スイッチが押されたら(GNDに接続されたら)
for (int i = 0; i < 3; i++) {
sendMorse("CQ");
delay(300);
}
sendMorse("DE");
delay(300);
for (int i = 0; i < 3; i++) {
sendMorse("JA7OVC");
delay(300);
}
sendMorse("K");
}
}
void sendMorse(const char* text) {
const int dotDuration = 100; // ドットの長さ(ミリ秒)
const int dashDuration = dotDuration * 3;
const int spaceDuration = dotDuration;
const int letterSpace = dotDuration * 3;
const int wordSpace = dotDuration * 7;
for (int i = 0; text[i] != '\0'; i++) {
switch (text[i]) {
case 'C': playMorse("-.-."); break;
case 'Q': playMorse("--.-"); break;
case 'D': playMorse("-.."); break;
case 'E': playMorse("."); break;
case 'J': playMorse(".---"); break;
case 'A': playMorse(".-"); break;
case '7': playMorse("--..."); break;
case 'O': playMorse("---"); break;
case 'V': playMorse("...-"); break;
case 'K': playMorse("-.-"); break;
}
delay(letterSpace);
}
}
void playMorse(const char* morse) {
const int dotDuration = 100;
for (int i = 0; morse[i] != '\0'; i++) {
if (morse[i] == '.') {
tone(pwmPin, 1000);
delay(dotDuration);
} else if (morse[i] == '-') {
tone(pwmPin, 1000);
delay(dotDuration * 3);
}
noTone(pwmPin);
delay(dotDuration);
}
}
ーーーーーーーーーーーーーーーーーー
面白い記述のスケッチになりました。
面白い記述のスケッチになりました。
継続して遊んでみたいと思います。
スケッチは全て、ChatGPTに
書いて貰っています。
私は指示して、arudinoに書き込みを
する事しかしてません。(笑)