/*
* 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;
}
}
Comments
Please log in or sign up to comment.