Hola estoy empesando en esto de arduino y necesitaba un poco de ayuda. Estoy haciendo un trabajo en el que uso una fila de 10 leds y con un pushbutton debo cambiar la funcion de encendido.
por default deben prender como el auto Knight Rider al precionar una ves se debe volver un contador binario, al la tercera prender de forma aleatoria y por ultimo deben prender con el valor de un potenciometro.
Estoy manejando un switch case para controlar con el boton pero a la hora de entrar al contador binario que es mi case 1: ya no puedo salir sin importar que siga precionando el boton. Les anexo lo que llevo de codigo ojala me puedan auxiliar y de antemano muchas gracias.
int pinLed;
int i;
int j;
int randNumber;
int pinPotenciometro;
int valorPotenciometro;
int pulsaciones=0;
int button=13;
void setup()
{
pinMode(button,INPUT);
pinMode(pinPotenciometro, INPUT);
Serial.begin(9600);
for(pinLed=2;pinLed<12;pinLed++){
pinMode(pinLed, OUTPUT);
}
}
void loop()
{
if (digitalRead (button) == HIGH){
pulsaciones ++;
Serial.print (pulsaciones); // Imprime el numero de pulsacion en el Serial Monitor de Arduino//
}
Serial.print (pulsaciones);
switch (pulsaciones){
case 0:
for(pinLed=2;pinLed<12;pinLed++){
digitalWrite(pinLed, HIGH);
delay(100); // Wait for 1000 millisecond(s)
digitalWrite(pinLed, LOW);
}
for(pinLed=10;pinLed>1;pinLed--){
digitalWrite(pinLed, HIGH);
delay(100); // Wait for 1000 millisecond(s)
digitalWrite(pinLed, LOW);
}
break;
case 1:
for ( int i = 0; i < 255; i++)
{
for ( int j = 0; j < 11; j++)
{
pinLed=j;
if ( ( (i >> j) & 1 ) == 1 )
digitalWrite(pinLed+2, HIGH);
else digitalWrite(pinLed+2, LOW);
}
delay(100);
}
break;
case 2:
randNumber = random(2,11); // genera número aleatorio entre 1 y 10
pinLed = randNumber;
digitalWrite(pinLed,HIGH);
delay(200);
digitalWrite(pinLed,LOW);
break;
case 3:
valorPotenciometro = analogRead(pinPotenciometro);
Serial.println(valorPotenciometro, DEC);
delay(100);
for (i = 0; i < 11; i++)
{
if (valorPotenciometro == 0) apagarLeds();
if (valorPotenciometro > i*102 && valorPotenciometro < (i+1)*102){
pinLed=i+2;
digitalWrite(pinLed, HIGH);
for(pinLed = i+2 ; pinLed <11; pinLed ++)
digitalWrite(pinLed,LOW);
}
if (valorPotenciometro == 1023) encenderLeds();
}
break;
case 4:
pulsaciones=0;
break;
}
}
void apagarLeds()
{
for (pinLed = 2; pinLed < 12; pinLed++)
digitalWrite(pinLed, LOW);
}
void encenderLeds()
{
for (pinLed = 2; pinLed < 12; pinLed++)
digitalWrite(pinLed, HIGH);
}