Código Morse (T1:E3)

     Este proyecto consiste en crear un dispositivo que permita ingresar un texto y el software lo transforme en código morse. El resultado lo podemos apreciar visualmente a través de un pequeño láser y auditivamente con un buzzer.

     Al final de esta página, encontrarán el video del programa #3 de "RoboTongas", ahí junto al Ingeniero Informático Franco Catrín, explicamos el funcionamiento de este proyecto.-

Dos vistas de diferente ángulo del proyecto terminado


Soporte de Trupán (MDF) para el circuito

Parte posterior de la placa impresa

Componentes:

1.- Láser
2.- Buzzer
3.- Arduino Nano
4.- Push Button
5.- Resistencia de 220 Ohms
6.- Conector de plug para conectar la fuente, que puede ser un cargador USB.         Esto en el caso de usarlo sin conexión al PC.



Tarjeta Impresa:

     Para montar los componentes, ocupamos una tarjeta virgen, a la cual con una CNC le grabamos el circuito, también se puede hacer con el método del ácido. Este dibujo está en formato espejo, para ser grabado directamente en la placa, solo habría que ajustar el tamaño.


Software:

     El Software utilizado es Arduino y lo ponemos a continuación para poder ser copiado al programa y subirlo a la tarjeta Arduino Nano. 

int letra = 0; //--------------------------------- INICIAMOS VARIABLE LETRA PARA ALMACENAR VALORES
int boton = 0;

void setup() {
  Serial.begin(9600); // ------------------------- ABRIMOS PUERTO SERIAL
  delay(500);
  Serial.println ("------ INICIO DEL PROGRAMA ------");
  Serial.println();
  Serial.println ("Ingrese caracter en línea de comandos");
  Serial.println();
  pinMode(13, OUTPUT); //------------------------- PATA 13 EN MODO SALIDA
  pinMode(boton, OUTPUT);        //declaramos el pin 2 como salida
  pinMode(4, INPUT);           //declaramos el pin 4 como entrada
}

void loop() {
  Serial.println(boton);
  boton = digitalRead(4);   //lee el estado del botón
  if (boton == HIGH) {       //si el estado es pulsado
    digitalWrite(13, HIGH); //---------------------------- ENCIENDA LÁSER
    tone(5, 1000); //------------------------------------- SONIDO FRECUENCIA
  }
  else {                                  //si el estado es no pulsado
    digitalWrite(13, LOW); //----------------------------- APAGUE LÁSER
    noTone(5); //----------------------------------------- SILENCIO SONIDO FRECUENCIA
  }
  if (Serial.available() > 0) { //--------- SI LA ENTRADA SERIAL >0 (ingresar letras minúsculas)
    letra = Serial.read(); //-------------- ALMACENAMOS EN VARIABLE LETRA EL VALOR
    if (letra != 10) { //------------------ si no es barra espacio
      if (letra == 97) { //---------------- SI EL VALOR ES 97 IMPRIMA "a"
        Serial.print("a ");
        a(); //---------------------------- VAYA A SUBRUTINA a()
      } if (letra == 98) {
        Serial.print("b ");
        b();
      }
      if (letra == 99) {
        Serial.print("c ");
        c();
      } if (letra == 100) {
        Serial.print("d ");
        d();
      }
      if (letra == 101) {
        Serial.print("e ");
        e();
      } if (letra == 102) {
        Serial.print("f ");
        f();
      }
      if (letra == 103) {
        Serial.print("g ");
        g();
      } if (letra == 104) {
        Serial.print("h ");
        h();
      }
      if (letra == 105) {
        Serial.print("i ");
        i();
      } if (letra == 106) {
        Serial.print("j ");
        j();
      }
      if (letra == 107) {
        Serial.print("k ");
        k();
      } if (letra == 108) {
        Serial.print("l ");
        l();
      }
      if (letra == 109) {
        Serial.print("m ");
        m();
      } if (letra == 110) {
        Serial.print("n ");
        n();
      }
      if (letra == 111) {
        Serial.print("o ");
        o();
      } if (letra == 112) {
        Serial.print("p ");
        p();
      }
      if (letra == 113) {
        Serial.print("q ");
        q();
      } if (letra == 114) {
        Serial.print("r ");
        r();
      }
      if (letra == 115) {
        Serial.print("s ");
        s();
      } if (letra == 116) {
        Serial.print("t ");
        t();
      }
      if (letra == 117) {
        Serial.print("u ");
        u();
      } if (letra == 118) {
        Serial.print("v ");
        v();
      }
      if (letra == 119) {
        Serial.print("w ");
        w();
      } if (letra == 120) {
        Serial.print("x ");
        x();
      }
      if (letra == 121) {
        Serial.print("y ");
        y();
      } if (letra == 122) {
        Serial.print("z ");
        z();
      }
    }
    Serial.println();
  }
}

void punto() {
  Serial.print("."); //--------------------------------- IMPRIMA "."
  digitalWrite(13, HIGH); //---------------------------- ENCIENDA LÁSER
  tone(5, 1000); //------------------------------------- SONIDO FRECUENCIA
  delay(200);
  digitalWrite(13, LOW); //----------------------------- APAGUE LÁSER
  noTone(5); //----------------------------------------- SILENCIO SONIDO FRECUENCIA
  delay(150);
}

void raya() {
  Serial.print("-");//--------------------------------- IMPRIMA "-"
  digitalWrite(13, HIGH);//---------------------------- ENCIENDA LÁSER
  tone(5, 1000);
  delay(400);
  digitalWrite(13, LOW);
  noTone(5);
  delay(150);
}

void a() { //--------------------------- VA 1 VEZ A RUTINA punto() Y 1 VEZ A RUTINA raya()
  punto();
  raya();
}

void b() {
  raya();
  punto();
  punto();
  punto();
}
void c() {
  raya();
  punto();
  raya();
  punto();
}
void d() {
  raya();
  punto();
  punto();
}
void e() {
  punto();
}
void f() {
  punto();
  punto();
  raya();
  punto();
}
void g() {
  raya();
  raya();
  punto();
}
void h() {
  punto();
  punto();
  punto();
  punto();
}
void i() {
  punto();
  punto();
}
void j() {
  punto();
  raya();
  raya();
  raya();
}
void k() {
  raya();
  punto();
  raya();
}
void l() {
  punto();
  raya();
  punto();
  punto();
}
void m() {
  raya();
  raya();
}
void n() {
  raya();
  punto();
}
void o() {
  raya();
  raya();
  raya();
}
void p() {
  punto();
  raya();
  raya();
  punto();
}
void q() {
  raya();
  raya();
  punto();
  raya();
}
void r() {
  punto();
  raya();
  punto();
}
void s() {
  punto();
  punto();
  punto();
}
void t() {
  raya();
}
void u() {
  punto();
  punto();
  raya();
}
void v() {
  punto();
  punto();
  punto();
  raya();
}
void w() {
  punto();
  raya();
  raya();
}
void x() {
  raya();
  punto();
  punto();
  raya();
}
void y() {
  raya();
  punto();
  raya();
  raya();
}
void z() {
  raya();
  raya();
  punto();
  punto();
}

Programa #3