Buenas con todos, disculpen, necesito hacer un programa que cuando presione un boton A y luego de 5 segundos presione un botón B se encienda un led verde y si es cualquier otra combinación se encienda el led rojo.
Por ahora tengo este código, pero la verdad estoy muy confundida en cuanto a cómo podría escribir la condición para que pueda suceder el código.
int ledrojo = 12;
int ledverde=13;
int botonA = 11;
int botonB = 10;
void setup() {
pinMode(ledrojo, OUTPUT);
pinMode(ledverde, OUTPUT);
pinMode(botonA, INPUT_PULLUP);
pinMode(botonB, INPUT_PULLUP);
}
void loop() {
if(digitalRead(botonA)==LOW)
{
delay(5000);
if(digitalRead(botonB)==LOW)
{
digitalWrite(ledverde,HIGH);
}
}
}
Usando los valores de tu boceto... Aquí hay una "plantilla" que ayudará. Debes rellenar los espacios en blanco.
//// Declarar dispositivos y variables
int ledrojo = 12; // Declarar LED rojo
int ledverde = 13; // Declarar LED verde
int botonA = 11; // Botón de declaración A
int botonB = 10; // Botón de declaración B
long tiempoA, tiempoB; // Crear almacenamiento "signed" por botón horas
bool presionadoA, presionadoB; // Crear almacenamiento de "flag" para pulsaciones de botones
void setup() {
//// Configurar dispositivos
Serial.??(?????); // Iniciar la comunicación en serie
pinMode(ledrojo , OUTPUT); // pin de configuración para OUTPUT
pinMode(ledverde, OUTPUT); //
pinMode(botonA, INPUT_PULLUP); // configurar el pin para INPUT con resistencia PULLUP (activa LOW)
pinMode(botonB, INPUT_PULLUP); //
}
void loop() {
//// Botón de lectura A
if (??) { // Si no se presionó el botón...
if (??) { // leer el botón... y si se presiona...
tiempoA = ??; // Tiempo de almacenamiento presionado
presionadoA = ??; // Establecer "flag" para el botón presionado
Serial.println(millis(); // Mostrar tiempo pulsado
}
}
//// Botón de lectura B
if (??) { // Si no se presionó el botón...
if (??) { // leer el botón... y si se presiona...
tiempoB = ??; // Tiempo de almacenamiento presionado
presionadoB = ??; // Establecer "flag" para el botón presionado
Serial.println(millis(); // Mostrar tiempo pulsado
}
}
if ((?? == ?) && (?? == ?)) { // Botón de verificación presione "flags"
if (?? - ?? > ????) { // si la diferencia entre A y B es superior a 5 segundos
digitalWrite(ledverde, HIGH); // ... verde si > 5 segundos
Serial.println(?? - ??); // Mostrar diferencia de tiempos de pulsación del botón
Serial.println(":}"); // Mostrar resultados
}
else {
digitalWrite(ledrojo, HIGH); // ... rojo si no es 5 segundos o orden incorrecto
Serial.println(abs(?? - ??)); // Mostrar diferencia absoluta
Serial.println(":{"); // Mostrar resultados
}
Serial.println("Presione RESET");
while (1); // Detente aquí. Presione el botón RESET
}
}