Paso 5: programa
Nota: Si usted ha tenido algunas experiencia de programación Arduino antes, usted puede preguntarse por qué simplemente no sustituya la larga cadena de "si... otro "s que identifican cada carácter con una declaración de caso de interruptor. Sin embargo, después de un dolor de cabeza y una combinación de investigación y solución de problemas, descubrí que la opción caso sólo puede aceptar un valor determinado y no una matriz de caracteres. Tanto por mi pereza...
int LED = 2;
int buzzerPin = 3;
int puntos = 250;
char * morseLetters [] = {".-", "-...", "-.-.", "-...",".","... -.", "--.", "....", "..",".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.","...", "-", ".. -", "...-", ".--", "-.. -", "-.--", "--.." };
char * morseNumbers [] = {"---","---", "... ---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};
void setup()
{
pinMode (LED, salida);
pinMode (buzzerPin, salida);
Serial.Begin(9600);
}
void loop()
{
info de Char;
Si (Serial.available() > 0) {}
info = Serial.read();
Si (información > = 'a' & & información < = 'z') {//We puede utilizar usar esto por el hecho de que cada código ASCII es un número
letterId (morseLetters [info - 'a']);
}
else if (info > = 'A' & & información < = 'Z') {}
letterId (morseLetters [info - 'A']);
}
else if (info > = 0 & & información < = 9) {}
letterId (morseNumbers [info - 0]);
}
else if (info == ' ') {}
Delay(DOT * 4);
}
}
}
void letterId (char * personaje) {}
int i = 0;
mientras que (carácter [i]! = '\0') {}
Output(character[i]);
i ++;
}
Delay(DOT * 3);
}
anular salida (char ID) {}
digitalWrite(LED,HIGH);
digitalWrite(buzzerPin,HIGH);
Si (ID == '.') {
Delay(DOT);
}
Else {}
Delay(DOT * 3);
}
digitalWrite(LED,LOW);
digitalWrite(buzzerPin,LOW);
Delay(DOT);
}