Buenas tenia una consulta respecto a un código para un cronometro que se muestra en una pantalla lcd, usando un pulsador como inicio/pausa y otro como reset, y bueno a la hora de simular al oprimir el botón de inicio pues este no inicia de manera inmediata, y tarda bastante en que empiece a trabajar, y una vez que lo hace tarda bastante en pasar los segundos y lo ademas de que cuando pasa el tiempo este no cambia de forma regular, sino que a veces se tarda mas en cambiar, ademas al volver a presionar el pulsador para pausar este no funciona correctamente.
Adjunto el código con el que estoy trabajando por si me pueden ayudarme a consultar y ver el error que estoy cometiendo. Cabe decir que el segundo pulsador de reset funciona correctamente, de antemano gracias por la consulta.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int k;
unsigned int horas = 0;
unsigned int minutos = 0;
unsigned int segundos = 0;
unsigned int centesimos = 0;
unsigned int milisegundos;
int reset = A2;
int inicio = A1;
void setup() {
pinMode(reset, INPUT);
pinMode(inicio, INPUT);
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("CRONOMETRO");
}
void loop() {
if (digitalRead(reset) == LOW) {
k = 0;
}
if (digitalRead(inicio) == LOW) {
k = 1;
}
switch (k) {
case 0:
horas = 0;
minutos = 0;
segundos = 0;
case 1:
delay (10);
case 2:
cronometro();
}
}
void cronometro() {
milisegundos = millis ();
if (milisegundos % 10 == 0) {
centesimos++;
if (centesimos == 100) {
centesimos = 0;
segundos++;
}
if (segundos == 60) {
segundos = 0;
minutos++;
}
if (minutos == 60) {
minutos = 0;
horas++;
}
lcd.setCursor(4, 1);
if (horas < 10) {
lcd.print("0");
}
lcd.print(horas);
lcd.print(":");
lcd.setCursor(7, 1);
if (minutos < 10) {
lcd.print("0");
}
lcd.print(minutos);
lcd.print(":");
lcd.setCursor(10, 1);
if (segundos < 10) {
lcd.print("0");
}
lcd.print(segundos);
}
}