Hola comunidad de arduino, estoy haciendo un proyecto de 3 LED y 1 BOTOM lo que quiero hacer es que al presionar 3 veces el botón se prenda el LED rojo, 2 Veces presionado el botón, led amarillo y 1 una vez el led verde.
1 push = Led verde encendido.
2 push = Led amarillo encendido.
3 push = led rojo encendido.
Se me es un poco difícil con la propiedad loop que se me remite y no logra almacenar cuantas veces presiono el boton para que de imedianto, pase al led rojo al presionar el botón 3 veces
Hasta ahorita solo he logrado que lo presiono una vez y se prende el verde otra vez y prende el amarillo y asi lo ara en secuencia, pero yo no quiero que haga esa secuencia
Aqui les dejo el codigo que tengo hasta ahorita, espero pueda ayudarme con mi error:
int botomStatus = 0;
int botomAnterrior = 0;
int botomAnterrior2 = 0;
int status = 0;void setup(){
pinMode(1, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);pinMode(2, INPUT);
}
void loop(){botomStatus = digitalRead(2);
if (botomStatus == HIGH && botomAnterrior == LOW) {
status = status + 1;
delay(10);
}botomAnterrior = botomStatus;
if(botomStatus == false && botomAnterrior2 == true){
switch (status)
{
case 1:
digitalWrite(6, HIGH);
digitalWrite(4, LOW);
digitalWrite(1, LOW);
break;
case 2:
digitalWrite(6, LOW);
digitalWrite(4, HIGH);
digitalWrite(1, LOW);
break;
case 3:
digitalWrite(6, LOW);
digitalWrite(4, LOW);
digitalWrite(1, HIGH);
break;
default:
status = 0;
digitalWrite(6, LOW);
digitalWrite(4, LOW);
digitalWrite(1, LOW);
break;
}}
botomAnterrior2 = botomStatus;
}
Conexion:
Espero pueda ayudarme de antemano gracias y espero igual me haya explicado, gracias
DEPUES DE UN BUEN TIEMPO AQUI LES COMPARTO LA SOLUCION.
int botomStatus = 0;
int botomAnterrior = 0;
int status = 0;
int x=0;
int concurrencia = 0;
boolean compareTo = false;
void setup(){
pinMode(1, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(2, INPUT);
}
void loop(){
while(true){
botomStatus = digitalRead(2);
if (botomStatus == HIGH && botomAnterrior == LOW) {
status = status + 1; //Condicion que verifica si el usuario a presionado el botom
delay(10);
Serial.print("hola");
}
x=concurrencia%2;
if(status != 0 && x==0 && concurrencia==80){
compareTo=true; //Condicion que da luz verde a la condicion de las variables
Serial.println(status);
break;
}
if(status != 0){
delay(20);
concurrencia++; //concurrencia o concatenacion de las veces que paso, sirve para dar unos 10 seg depues de presinar
} //una vez el boton para verificar si se volvera a presionar o no.
botomAnterrior = botomStatus;
}
if(compareTo == true){ //Aqui valora la condicion si se cumplio una anterior, que el "status" sea diferente de 0
switch (status)
{
case 1:
digitalWrite(6, HIGH);
digitalWrite(4, LOW);
digitalWrite(1, LOW);
status = 0;
compareTo=false;
concurrencia = 0;
break;
case 2:
digitalWrite(6, LOW);
digitalWrite(4, HIGH);
digitalWrite(1, LOW);
status = 0;
compareTo=false;
concurrencia = 0;
break;
case 3:
digitalWrite(6, LOW);
digitalWrite(4, LOW);
digitalWrite(1, HIGH);
status = 0;
compareTo=false;
concurrencia = 0;
break;
default:
status = 0;
digitalWrite(6, LOW);
digitalWrite(4, LOW);
digitalWrite(1, LOW);
compareTo=false;
concurrencia = 0;
break;
}
}
}
Video: