Tengo que resolver el siguiente ejercicio, pero al resolverlo no puedo hacer que se muevan para la izquierda o para la derecha las luces. Por debajo esta la consigna junto con el código.
/*Al encender la placa, los 4 LEDs deben encenderse al mismo
tiempo durante dos segundos. Pasados los dos segundos del punto
anterior, se debe encender solo el LED que está más a la
izquierda. En este punto se puede usar la función delay()
Una vez que se completa la “secuencia” descrita en el punto
anterior, los dos pulsadores deberán funcionar para “mover” la
luz. Esto quiere decir que, si presiono el pulsador de la
izquierda, el LED que está encendido debe apagarse, y encenderse
el que se encuentra a la izquierda. Al presionar el pulsador
de la derecha, se debe apagar el LED que se encuentra encendido,
y encenderse el que está a la derecha.
Cuando se presione el botón de la izquierda y el LED encendido
sea el de más a la izquierda, o cuando se presione el botón de
la derecha y el LED encendido sea el de más a la derecha, la placa
no deberá realizar ninguna acción (no se tiene que “mover la luz”
para ningún lado).*/
int velocidad = 2000;
int ledEncendido = 11;
int boton1Antes = LOW;
int boton2Antes = LOW;
int cortar=0;
void setup()
{
Serial.begin(9600);
for(int i=8; i<12; i++)
{
pinMode(i, OUTPUT); //son de salida: 1 encendido, 0 apagado
}
for(int i=3; i<5; i++)
{
pinMode(i, OUTPUT); //son de entrada: 1 encendido, 0 apagado
}
}
void loop()
{
int encender = digitalRead(ledEncendido);
int boton1 = digitalRead(4);
int boton2 = digitalRead(3);
if(cortar == 0)
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
delay(2000);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
cortar++;
delay(2000);
}
if(boton1 == HIGH && boton1Antes == LOW)
{
digitalWrite(ledEncendido, LOW);
Serial.println(ledEncendido);
ledEncendido = ledEncendido + 1;
Serial.println(ledEncendido);
if(ledEncendido > 11)
{
ledEncendido = 11;
}
digitalWrite(ledEncendido, HIGH);
}
boton1Antes = boton1;
if(boton2 == HIGH && boton2Antes == LOW)
{
digitalWrite(ledEncendido, LOW);
ledEncendido = ledEncendido - 1;
if(ledEncendido < 8)
{
ledEncendido = 8;
}
digitalWrite(ledEncendido, HIGH);
}
boton2Antes = boton2;
delay(50);
}