Created
December 11, 2015 11:55
-
-
Save uozias/c9b0703cab11f6021327 to your computer and use it in GitHub Desktop.
Morse signal prctice app for Arduino with LED
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ledPin = 13; //13番をアウトプットに指定 | |
int interval = 500; // ・1つは、0.5秒にする | |
int long_interval = interval * 3; // ーは・の3つ分まつ | |
String moji[] = {String("A"), String("B"), String("C"), String("D"), String("E"), String("F"), String("G"), String("H"), String("J"), String("K"), String("L"), String("M"), String("N"), String("O"), String("P"), String("Q"), String("R"), String("S"), String("T"), String("U"), String("V"), String("W"), String("X"), String("Y"), String("Z"), String("I")}; | |
String tonTu[] = {String("sl"), String("lsss"), String("lsls"), String("lss"), String("s"), String("ssls"), String("lls"), String("ssss"), String("slll"), String("lsl"), String("slss"), String("ll"), String("ls"), String("lll"), String("slls"), String("llsl"), String("sls"), String("sss"), String("l"), String("ssl"), String("sssl"), String("sll"), String("lssl"), String("lsll"), String("llss"), String("ss")}; | |
int lengthMojiArray = sizeof(moji) / sizeof(moji[0]); | |
// 表示したい文字1つ | |
int ramdomNUm = random(0, lengthMojiArray); | |
String target = moji[ramdomNUm]; | |
String inputted = String(""); | |
int length = 0; | |
void setup() | |
{ | |
Serial.begin(9600); // シリアルポートを9600bpsで開く | |
pinMode(ledPin, OUTPUT);//13番をアウトプットに指定 | |
Serial.println(ramdomNUm); | |
Serial.println(target); | |
showCharacter(target); | |
} | |
void loop() | |
{ | |
// 入力と設定値をつきあわせる | |
if(Serial.available()>0){ | |
inputted = String(char(Serial.read())); | |
Serial.println(inputted); | |
if(inputted.equals(target)){ | |
Serial.println("ok"); | |
// 正解 チカチカ | |
digitalWrite(ledPin, HIGH); // 光らせる | |
delay(300); | |
digitalWrite(ledPin, LOW); //光らせるのやめる | |
delay(300); | |
digitalWrite(ledPin, HIGH); // 光らせる | |
delay(300); | |
digitalWrite(ledPin, LOW); //光らせるのやめる | |
delay(300); | |
digitalWrite(ledPin, HIGH); // 光らせる | |
delay(300); | |
digitalWrite(ledPin, LOW); //光らせるのやめる | |
delay(300); | |
delay(interval); // ・1つは、1秒にする | |
// 次の文字を決める | |
ramdomNUm = random(0, lengthMojiArray); | |
Serial.println(ramdomNUm); | |
target = moji[ramdomNUm]; | |
Serial.println(target); // 一応決定した文字を出す | |
}else{ | |
Serial.println("ng"); | |
delay(long_interval); // 長く待つ | |
} | |
showCharacter(target); // 1回表示する | |
} | |
} | |
// 文字1つぶん光らせる | |
void showCharacter(String character) | |
{ | |
// 光らせたい文字の番号を検索 | |
int targetIndex = 0; | |
for (int i = 0; i < lengthMojiArray; i++){ | |
if(character.equals(moji[i])){ | |
targetIndex = i; | |
break; | |
} | |
} | |
// その番号の符号を検索 | |
length = tonTu[targetIndex].length(); | |
for(int j = 0; j < length; j++){ | |
showSignal(String(tonTu[targetIndex].charAt(j))); // 光らせる | |
} | |
} | |
// 符号1つ分を光らせる | |
void showSignal(String character) | |
{ | |
if(String("s").equals(character)) { // 短点 | |
Serial.println("short!"); | |
digitalWrite(ledPin, HIGH); // 光らせる | |
delay(interval); // ・1つは、1秒にする | |
}else if(String("l").equals(character)){ // 長点 | |
Serial.println("long!"); | |
digitalWrite(ledPin, HIGH); // 光らせる | |
delay(long_interval); // ーは・の3つ分なので、3秒まつ | |
} | |
digitalWrite(ledPin, LOW); //光らせるのやめる | |
delay(long_interval); // 文字の間は・の3つ分あけるの | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment