Hola con todos... tengo una inquietud recién estoy empezando en esto y no se muy bien varias cosas, lo que no entiendo es como puedo almacenar los datos que ingreso por serial para compararlos con los datos del reloj.
al ser un reloj necesito dos dígitos (00:12:00) necesito que al aplastar eso en mi teclado salga lo mismo en la pantalla lcd como en el caso de esta imagen
https://drive.google.com/open?id=1i5KruWa_w5aH1TOL0Uz6NP1ZyJBqC07u
Pero en mi caso eso no sucede me pasa lo que está en esta imagen
https://drive.google.com/open?id=11A7QP7xZUvmRqQe9KDFyRcw8lXMVUYwP
y al momento que la hora llega a la hora de alarma no pasa nada
include <TimerOne.h>
#include <LiquidCrystal.h>
//RS --> 13
//E --> 12
//D4 --> 11
//D5 --> 10
//D6 --> 9
//D7 --> 8
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
int h = 0; // para las horas
int m = 1; // para los minutos
int s = 50 - 1; // para los segundos que inicie en 00
boolean actualizar = true;
char h_ingresa;
char m_ingresa;
String h_alarma;
String m_alarma;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); // inicializar la lcd
lcd.clear(); // que la lcd este sin datos
pinMode(5, OUTPUT);
Timer1.initialize(1000000); //cada 1s se produce una interrupción por lo que es un reloj
Timer1.attachInterrupt(manejodeltimer); // cada que pase un segundo que realize la función de manejo
}
void manejodeltimer () { // cada que se ejecute la interrupción va a realizar esta función.
s++; // cada que pase un segundo se incremete la variable de los segundos
actualizar = true; // si se incrementa s entonces actualizar es true
}
void RelojActualizado () {
if (s > 59) { // para que cuando los segundos lleguen a 59 incrementen los minutos y los segundos vuelva a cero
m++;
s = 0;
}
if (m > 59) { // para que cuando los minutos lleguen a 60 incrementen las horas y los minutos vuelvan a cero
h++;
m = 0;
}
if (h > 23) { // si las horas son mayores a 23 vuelven a cero todo
h = 0;
m = 0;
s = 0;
}
}
void loop() {
if (Serial.available() > 0) {
while (Serial.available() > 0) {
h_ingresa = Serial.read(); //leer palabras
h_alarma += h_ingresa;
}
while (Serial.available() > 0) {
m_ingresa = Serial.read(); //leer palabras
m_alarma += m_ingresa;
}
if (m_alarma == m && h_alarma ==h){
digitalWrite(5, HIGH);
}
}
if (actualizar == true) { // si se a incrementado los segundos, entonces se ejecuta el loop
RelojActualizado (); // se ejecuta la actualización del reloj
//RELOJ
lcd.setCursor(0, 0); // primera fila de la lcd
if (h < 10)lcd.print("0"); // si las horas son menores a 10 imprime un cero delante
lcd.print(h); // imprimirá las horas
lcd.print(":"); // imprimirá un espacio
if (m < 10)lcd.print("0"); // si los minutos son menores a 10 imprime un cero delante
lcd.print(m); // imprimirá los minutos
lcd.print(":"); // imprimirá un espacio
if (s < 10)lcd.print("0"); // si los segundos son menores a 10 imprime un cero delante
lcd.print(s); // imprimirá los segundos
lcd.print(" RELOJ");
//ALARMA
lcd.setCursor(0, 1);
lcd.print(h_alarma);
lcd.setCursor(2, 1);
lcd.print(":");
lcd.setCursor(3, 1);
lcd.print(m_alarma);
lcd.setCursor(5, 1);
lcd.print(":");
lcd.setCursor(8, 1);
lcd.print(" ALARMA");
actualizar = false; // si no se incrementa segundo entonces no se ejecuta el loop
}
}