GiHOxp
Published

The Morse Reborn

This project lets you write on an LCD using Morse code.

IntermediateFull instructions provided2,125
The Morse Reborn

Things used in this project

Hardware components

Alphanumeric LCD, 16 x 2
Alphanumeric LCD, 16 x 2
×1
Pushbutton Switch, Push-Pull
Pushbutton Switch, Push-Pull
×3
Arduino UNO
Arduino UNO
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Sketch

Code

Code

Arduino
/*
 * Nombre del programa: morserenacido.ino
 * Descripción del programa: Este programa permite escribir en un display mediante clave morse. Requiere de un circuito utilizando un display lcd de 16 x 2, tres botones, y un arduino genuino uno.
 * Boton 1: Raya
 * Boton 2 : Punto
 * Boton 3 : Termina el caracter.
 * 
 * Desarrollo: Cesar Gibran Hernandez Orozco
 * Fecha de creación: 29/05/2019
 * Versión: 1.0
 * Correo electronico: supergxp@gmail.com
 * 
 */
const int punto = 12;
const int raya = 13;
const int reset = 5;

int puntoon = HIGH;
int rayaon = HIGH;
int reseton = HIGH;
String Letra;
int rayaon2 = HIGH;
int puntoon2 = HIGH;
int envio2 = HIGH;
int renglon = 0;
int columna = 0;
String envio;

#include <LiquidCrystal.h>

LiquidCrystal lcd (2, 3, 7, 9, 8, 10);

byte as[8]={
  0b00000,
  0b00100,
  0b01010,
  0b10001,
  0b11111,
  0b10001,
  0b10001,
  0b00000
};

byte bs[8]={
  0b00000,
  0b11100,
  0b10010,
  0b10010,
  0b11100,
  0b10010,
  0b10010,
  0b11100
};

byte resets[8]={
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000 
};

byte cs[8]={
  0b00000,
  0b01110,
  0b10000,
  0b10000,
  0b10000,
  0b10000,
  0b01110,
  0b00000 
};

byte ds[8]={
  0b00000,
  0b11100,
  0b10010,
  0b10010,
  0b10010,
  0b10010,
  0b11100,
  0b00000 
};


void setup() {
  Serial.begin(9600);
  pinMode(rayaon, INPUT);
  pinMode(puntoon, INPUT);
  pinMode(reseton, INPUT);

   lcd.begin(16, 2);
   lcd.createChar(2, as);
   lcd.createChar(3, bs);
   lcd.createChar(4, resets);
   lcd.createChar(5, cs);
   lcd.createChar(6, ds);
   
   
  Letra = String();
  envio = String();
   /*
   lcd.print("I ");
   lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte
   lcd.print(" Arduino! ");
   lcd.write((byte) 1);*/
   
}

void loop() {

rayaon = digitalRead(raya);
puntoon =digitalRead(punto);
reseton =digitalRead(reset);

int sensorReading = analogRead(A0);
int delayTime = map(sensorReading, 0, 1023, 200, 1000);




if(rayaon == HIGH){
  rayaon2 = HIGH;
}

if(puntoon == HIGH){
  puntoon2 = HIGH;
}

if(reseton == HIGH){
  envio2 = HIGH;
}
if(rayaon == LOW && rayaon2 == HIGH){
  Letra = Letra + "R";
  Serial.println(Letra);
  //delay(50);
  rayaon2 = rayaon;
}

if(puntoon == LOW && puntoon2 == HIGH){
  Letra = Letra + "P";
  Serial.println(Letra);
  //delay(50);
  puntoon2 = puntoon;
}

if(reseton == LOW && envio2 == HIGH){
  envio2 = reseton;
  Serial.println("entro");
  /*lcd.setCursor(columna, renglon);
  
   Letra = "";
   envio = "";
   columna = columna +1;*/


 if(Letra == "PR"){
   envio = "A";
   Serial.println(envio);
   
   Letra = "";
   columna = columna + 1;
 }

  else if(Letra == "RPPP"){
   envio = "B";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
 
  else if(Letra == "RPP"){
   envio = "D";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
 
   else if(Letra == "RPRP"){
   envio = "C";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }


   else if(Letra == "P"){
   envio = "E";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

   else if(Letra == "PPRP"){
   envio = "F";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

   else if(Letra == "RRP"){
   envio = "G";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

   else if(Letra == "PPPP"){
   envio = "H";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

   else if(Letra == "PP"){
   envio = "I";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

   else if(Letra == "PRRR"){
   envio = "J";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "RPR"){
   envio = "K";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }


   else if(Letra == "PRPP"){
   envio = "L";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "RR"){
   envio = "M";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "RP"){
   envio = "N";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }


    else if(Letra == "RRR"){
   envio = "O";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "PRRP"){
   envio = "P";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "RRPR"){
   envio = "Q";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "PRP"){
   envio = "R";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "PPP"){
   envio = "S";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "R"){
   envio = "T";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "PPR"){
   envio = "U";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "PPPR"){
   envio = "V";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "PRR"){
   envio = "W";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }

    else if(Letra == "RPPR"){
   envio = "X";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "RPRR"){
   envio = "Y";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "RRPP"){
   envio = "Z";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
    else if(Letra == "PRRRR"){
   envio = "1";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "PPRRR"){
   envio = "2";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "PPPRR"){
   envio = "3";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "PPPPR"){
   envio = "4";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "PPPPP"){
   envio = "5";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "RPPPP"){
   envio = "6";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "RRPPP"){
   envio = "7";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "RRRPP"){
   envio = "8";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "RRRRP"){
   envio = "9";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "RRRRR"){
   envio = "0";
   Serial.println(envio);
   Letra = "";
   columna = columna + 1;
 }
  else if(Letra == "PPPPPP"){
   lcd.setCursor(columna, renglon);
   lcd.write(4);
   Letra = "";
   columna = columna + 1;
 }
 else if(Letra == "RRRRRR"){
   renglon = 1;
   columna = 17;
   Letra = "";
   
 }
 
  else{
    Letra = "";
  }
   lcd.setCursor(columna-1, renglon);
 lcd.print(envio);
 envio = "";
}
 

if(renglon == 1 && columna == 17){
  renglon = 0;
  columna = 0;

for(columna = 0; columna <= 16; columna++){
  lcd.setCursor(columna, 0);
   lcd.write(4);
}
 for(columna = 0; columna <= 16; columna++){
  lcd.setCursor(columna, 1);
   lcd.write(4);
}
 renglon = 0;
  columna = 0;
}

if(columna == 16){
  renglon = 1;
  columna = 0;
 
}

























}

Credits

GiHOxp
4 projects • 3 followers
Contact

Comments

Please log in or sign up to comment.