Buenos dias,
Estoy intentando crear un contador de un futbolin, los goles los cuenta automaticamente con sensor ultrasonico, hasta ahi bien, pero he querido rizar el rizo y poner 3 botones para controlar posibles errores en el marcador.
La idea es con una combinacion de pulsaciones de los 3 botones (Ejemplo):
- Presionando boton 1 mas de 3 segundos y despues boton 2 y posteriormente boton 3, me deje incrementar contador display 1
* Boton 2 Incrementa 1 gol
* Boton 3 disminuye 1 gol - Presionando boton 1 mas de 3 segundos y despues boton 3 y posteriormente boton 2, me deje incrementar contador display 2
* Boton 2 Incrementa 1 gol
* Boton 3 disminuye 1 gol
He hecho un frankenstein de ejemplos, para ver si lo conseguia con un display y replicarlo, pero imposible y eso que solo lo he intentado presionando el boton 1 3 segundos.
Si alguien me pudieda ayudar se lo agradeceria
#include <EEPROM.h>
byte Pulsador =1; // Pines usados
byte Led =5;
byte Ventilador=6;
boolean Estado_Pulsador; // Para almacenar el estado del pulsador low o high
boolean Estado_Anterior; // Usada para saver cundo soltamos el pulsador
byte Secuencia = 0; // Para manejar la secuencia de salidas
byte Total_Secuencias=5; // Cambia aquipara limitar ell numero de secuencias
unsigned long T_Apagar=3000; // Tiempo a mantener pulsado el boton para apagar
unsigned long T_Pulsado=0; // Auxiliar para controlar tiempo de boton pulsado
void setup()
{
pinMode(Pulsador, INPUT); // Configuramos pin como entrada
Estado_Anterior = false; // Iniciamos elproceso con el boton sin pulsar
}
void loop()
{
// Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón pull up.
Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón pull down.
if (Estado_Pulsador && !Estado_Anterior) // Si pulsador pasa de low a high (entra al pulsar pero no al mantener pulsado)
{
T_Pulsado=millis()+T_Apagar; // Para controlar el timpo que pasa pulsado
Estado_Anterior=true; // No enta en el if hasta q pulsador pase de high a low
Secuencia++; // Pasamos a siguiente secuencia
}
if (!Estado_Pulsador && Estado_Anterior) // Si pulsador pasa de high a low (entra al soltar pulsador pero no al mantener despulsado)
{
Estado_Anterior=false; // No enta en el if hasta q pulsador pase de low a high
T_Pulsado=0; // Al soltar pulsador ya no controlamos el tiempo que permanece pulsado
}
if (T_Pulsado>0 && Estado_Pulsador && millis()>T_Pulsado)
{ // Si hay tiempo cargado para controlar el fin y esta pulsado y ha transcurrido el tiempo para apagarlo
T_Pulsado=0; // Ya no controlamos tiempo de pulsado
Secuencia=0; // Secuencia 0, todo apagado
}
if (Secuencia>Total_Secuencias) // Si se han acabado las secuencias
{Secuencia=1;} // Regresamos a la primera (podrias poner T_Pulsado=0; para finalizar aqui)
switch (Secuencia)
{
case 0:
//No hay secuencia, apagar o hacer lo que necesites
break;
case 1:
Proceso1();
break;
case 2:
Proceso2();
break;
case 3:
Proceso3();
break;
case 4:
Proceso4();
break;
case 5:
Proceso5();
break;
}
}
void Proceso1()
{
}
void Proceso2()
{
}
void Proceso3()
{
}
void Proceso4()
{
}
void Proceso5()
{
}