Hola buenas noches estoy arrancando con este fascinante tema de ARDUINO, ya probé varios programas subidos por otras personas y alguno de los ejemplos. Pero hoy me surgió la necesidad de hacer un timer (Regresivo) con valores fijos definido en 4 botones que se pueda ver en el display y que tenga salida a un rele.
Les soy sincero no tengo idea de por donde empezar vi muchos ejemplos pero son programables y la verdad que no logro ver donde tengo que modificar para poder agregar los valores fijos que quiero para cada pulsador.
Se que parece un abuso el pedir un código de programación ya escrito con lo que estoy necesitando pero no logro darme cuenta como hacerlo...
Encontré este código de una persona en una pagina web que creo que me serviría pero no logro (que ya en dicho antes) darme cuenta o saber como definirle valores fijos de por
Ejemplo:
Pulsador 1 = 1.30 Hs
Pulsador 2 = 30 Min
Pulsador 3 = 10 min
y el Pulsador de comienzo.
Va el codigo que encontre
//TEMPORIZADOR ARDUINO + LCD
#include //Libreria del display LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Inicializamos la libreria con el numero de los pines a utilizar
int buzzer = 13; //Alarma
int ahoras = 0; //Variable a mostrar por LCD de las horas
int aminutos = 0; //Variable a mostrar por LCD de los minutos
int asegundos = 0; //Variable a mostrar por LCD de los segundos
int segundostotal = 0; //Tiempo total
int msg= 0; //Barrera para el mensaje de bienvenida
int start = A1; //Pulsador de arranque
int empieza = 1024; // Variable para almacenaje del pulsador de arranque
int buth = A5; //Pulsador de Horas
int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos
int varbuth = 0; //Variable para almacenar el valor del pulsador de horas
int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos
void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.
pinMode(buzzer, OUTPUT); //Pin de alarma –> Salida
pinMode(buth, INPUT); //Pin de pulsador de horas –> Entrada
pinMode(butm, INPUT); //Pin de pulsador de minutos –> Entrada
pinMode(buts, INPUT); //Pin de pulsador de segundos –> Entrada
pinMode(start, INPUT); //Pin de pulsador de arranque –> Entrada
msg = 0; //Barrera del mensaje de bienvenida
empieza = 1024; //Barrera de arranque
varbuth = 1; //Barrera de horas
varbutm = 1; //Barrera de minutos
varbuts = 1; //Barrera de segundos
}
void loop()
{
if(msg==0) //Mostramos el mensaje de bienvenida solo una vez
{
lcd.setCursor(0,0);
lcd.print(“Temporizador com”);
lcd.setCursor(1,1);
lcd.print(“Arduino + LCD”);
delay(2500);
msg = 1;
lcd.clear();
}
//————————————————————————————————-
// LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR
// EL BOTON DE ARRANQUE
//————————————————————————————————-
do
{
varbuth = analogRead(buth); //Leemos boton de horas
varbutm = analogRead(butm); //Leemos boton de minutos
varbuts = analogRead(buts); //Leemos boton de segundos
if(varbuth == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
ahoras = ahoras + 1 ;
delay(250);
}
if(varbutm == 0) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad
{
aminutos = aminutos + 1;
delay(250);
}
if(varbuts == 0) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad
{
asegundos = asegundos + 1;
delay(250);
}
lcd.setCursor(0,0);
lcd.print(” Digite o Tempo”); //Muestra mensaje y las HH:MM:SS que vayamos aumentando
lcd.setCursor(4,1);
if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S)
lcd.print(":");
if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S)
lcd.print(":");
if (asegundos 0)
{
delay (1000); //Descontamos en periodos de 1 segundo
segundostotal–;
ahoras = ((segundostotal / 60)/ 60); //Convertimos los segundos totales en horas
aminutos = (segundostotal / 60) % 60; //Convertimos los segundos totales en minutos
asegundos = segundostotal % 60; //Convertimos los segundos totales en periodos de 60 segundos
lcd.setCursor(0,0);
lcd.print(“Tempo restante”); //Mostramos mensaje de tiempo restante
lcd.setCursor(4,1);
if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S)
lcd.print(":");
if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S)
lcd.print(":");
if (asegundos < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero
lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1)
if (segundostotal == 0) //Si finaliza el tiempo
{
while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
}
}
}
}
Bueno espero sepan disculpar mi pedido.... y quedo a la espera de alguna idea o respuesta....
Muchas Gracias!!!
Saludos