这道题据我所知大部分人都没能写出
代码仅供参考
char stringToMorseCode[] = "";
int dotLen = 100;
int audio8 = 2;
int note = 1200;
int dashLen = dotLen * 3;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
uint32_t fTransmit = 800; // KHz
TCCR1A = 0b01000000;
TCCR1B = 0b00001001; // CTCHIt
OCR1A = F_CPU / (2000 * fTransmit) - 1;
pinMode(9, OUTPUT) ;
char strbuf[255];
sprintf(strbuf,"设置载波频率:%d KHZ",(F_CPU / (2 * (1 + OCR1A)) / 1000));
Serial.println(strbuf);
}
void loop()
{
char inChar = 0;
char inData[100] = "";
String variable = "";
String variable1 = "";
int index1 = 0;
if ( Serial.available() > 0 ) {
while (Serial.available() > 0 && index1 < 100)
{
delay(100);
inChar = Serial.read();
inData[index1] = inChar;
index1++;
inData[index1] = '\0';
}
variable.toUpperCase();
for (byte i = 0 ; i < 100 ; i++) {
variable.concat(String(inData[i]));
}
delay(20);
}
String stringToMorseCode = String(variable);
for (int i = 0; i < 100; i++)
{
char tmpChar = stringToMorseCode[i];
tmpChar = toLowerCase(tmpChar);
GetChar(tmpChar);
}
}
void GetChar(char tmpChar)
{
switch (tmpChar) {
case 'a':
Serial.println(".-");
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'b':
Serial.println("-...");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 'c':
Serial.println("-.-.");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 'd':
Serial.println("-..");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 'e':
Serial.println(".");
MorseDot();
delay(100);
break;
case 'f':
Serial.println("..-.");
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 'g':
Serial.println("--.");
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 'h':
Serial.println("....");
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 'i':
Serial.println("..");
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 'j':
Serial.println(".---");
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
break;
case 'k':
Serial.println("-.-");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'l':
Serial.println(".-..");
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 'm':
Serial.println("--");
MorseDash();
delay(100);
MorseDash();
delay(100);
break;
case 'n':
Serial.println("-.");
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 'o':
Serial.println("---");
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
break;
case 'p':
Serial.println(".--.");
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 'q':
Serial.println("--.-");
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'r':
Serial.println(".-.");
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
break;
case 's':
Serial.println("...");
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
case 't':
Serial.println("-");
MorseDash();
delay(100);
break;
case 'u':
Serial.println("..-");
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'v':
Serial.println("...-");
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'w':
Serial.println(".--");
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
break;
case 'x':
Serial.println("-..-");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
break;
case 'y':
Serial.println("-.--");
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDash();
delay(100);
MorseDash();
delay(100);
break;
case 'z':
Serial.println("--..");
MorseDash();
delay(100);
MorseDash();
delay(100);
MorseDot();
delay(100);
MorseDot();
delay(100);
break;
default:
break;
}
}
void MorseDash()
{
tone(audio8, note, dashLen);
delay(dashLen);
}
void MorseDot()
{
tone(audio8, note, dotLen);
delay(dotLen);
}