Entradas Destacadas

EL MAR PERUANO

EL MAR PERUANO El mar peruano nos da muchos motivos para sentirnos orgullosos. La diversidad de la vida marina, lugares emblemáticos ...

miércoles, junio 20, 2018

Traductor de Código Morse


Traductor de Código Morse

En este proyecto se creará un traductor de texto a código Morse en Arduino usando un led y un buzzer en el hardware y arrays (matrices), strings (cadenas) y Monitor Serial en el software.
Componentes
  • 1 Placa Arduino UNO
  • 2 LEDs rojos de 5mm
  • 1 Buzzer
  • 1 Resistencia 270 Ω
  Montaje
 
Código
// Declaración de Pines (Led y Buzzer)
int ledpin = 13;
const int buzzer = 9;
// Declaración de matrices según el alfabeto morse.
char* letras [] = {
".-", "-...","-.-." , "-..", ".", "..-.", "--.", "....", "..",
".---","-.-",".-..","--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-","-.--","--.."
};
char* numeros [] = { "-----", ".----", "..---", "...--", "....-",".....", "-...."
"--...", "---..", "----."};
// Declaración del tiempo de duración de un punto, del cual salen los demás tiempos.
int delaypunto = 200;
// Void Setup
// Pines buzzer y leds como salida e inicio de comunicación Serial
void setup () {
pinMode (buzzer, OUTPUT);
pinMode (ledpin, OUTPUT);
Serial.begin (9600); }
// Void Loop
void loop () {
char ch; // Variable que "leerá" los mensajes enviados
if (Serial.available()) {
ch = Serial.read();
if (ch >= 'a' && ch <= 'z') {
secuenciaFlash(letras[ch - 'a']);//Recorrido de 'letras'
}
else if (ch >= 'A' && ch <= 'Z') {// Recorrido de 'letras'
secuenciaFlash(letras[ch - 'A']);
}
else if (ch >= '0' && ch <= '9') {// Recorrido de 'números'
secuenciaFlash(numeros[ch - '0']);
}
else if (ch == ' ') {// Retraso entre espacios
delay(delaypunto * 4);
}
}
}
// Void SecuenciaFlash
void secuenciaFlash(char* secuencia) { //Realización de destellos en forma de puntos o rayas
int i = 0;
while(secuencia[i] != NULL) {
parpadeo(secuencia[i]); //Parpadeo del led
i++;
}
delay(delaypunto *3);
}
// Void Parpadeo
void parpadeo(char PuntoORaya) {
digitalWrite(ledpin, HIGH); //Encendido del led
tone (buzzer, 500); //Encendido del buzzer
if (PuntoORaya == '.') {
delay(delaypunto);//Retraso de punto
}
else {
delay(delaypunto * 3); } //Retraso de raya
digitalWrite(ledpin,LOW);//Apagado de led
noTone (buzzer); } //Apagado buzzer
// Fin del Código

No hay comentarios.:

Publicar un comentario