¿cuál es el problema con el entrenador led en arduino?

0

actualmente estoy tratando de desarrollar un entrenador de luz por arduino, como una mendicidad usé 3 LED y 3 pulsadores, el LED debe funcionar al azar y cuando el LEDX es flash, el usuario presiona Push BottonX y así sucesivamente debo use un sensor aproximado o algo similar para ser más confiable

al cargar el siguiente código, todos los leds semanal continuo brillan (flash) ¿cuál es el problema? gracias por la ayuda.

int ledselect = 0;
int led1 = 11; 
int led2 = 12; 
int led3 = 13; 
int pb1 = 4;
int pb2 = 5;
int pb3 = 6;
void setup() { 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(pb1, INPUT);
pinMode(pb2, INPUT);
pinMode(pb3, INPUT);
}
void loop() {
int ledselect = random(3); 
switch (ledselect) {
case 0: //if ledcolor equals 0 then the led1 will turn on
digitalWrite(led1, HIGH);
if (pb1== HIGH) ;
digitalWrite(led1,LOW);
break;
case 1: //if ledcolor equals 1 then the led2 will turn on
digitalWrite(led2, HIGH);
if (pb2== HIGH) ;
digitalWrite(led2,LOW);
break;
case 2: //if ledcolor equals 2 then the led3 will turn on
digitalWrite(led3, HIGH);
if (pb3== HIGH) ;
digitalWrite(led3,LOW);
break;
}

} 
    
pregunta mohamed hassan

2 respuestas

2

En su código, está usando comparaciones de la forma pbX == HIGH , que siempre son ciertas, ya que sus variables pbX son números enteros con valores distintos de cero. Probablemente quiera reemplazarlo por digitalRead(pbX)== HIGH , para leer los interruptores conectados a los pines designados por estas variables. Y el punto y coma después de la cláusula if probablemente no esté haciendo lo que se espera. Estos son solo problemas técnicos con su código, pero sin profundizar en él, me parece que la lógica implementada está lejos de sus requisitos.

    
respondido por el Eugene Sh.
2

Gracias, ahora funciona

int ledselect = 0;
int led1 = 11; 
int led2 = 12; 
int led3 = 13; 
int pb1 = 4;
int pb2 = 5;
int pb3 = 6;
void setup() { 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(pb1, INPUT);
pinMode(pb2, INPUT);
pinMode(pb3, INPUT);
}
void loop() {
int ledselect = random(3); 
switch (ledselect) {
case 0:
digitalWrite(led1, HIGH);
delay(10);
while(digitalRead(pb1) != HIGH){delay(10);}
digitalWrite(led1,LOW);
break;
case 1:
digitalWrite(led2, HIGH);
delay(10);
while(analogReadRead(pb2) != HIGH){delay(10);}
digitalWrite(led2,LOW);
break;
case 2:
digitalWrite(led3, HIGH);
delay(10);
while(analogRead(pb3) != HIGH){delay(10);}
digitalWrite(led3,LOW);
break;
}

}
    
respondido por el mohamed hassan

Lea otras preguntas en las etiquetas