Buenas estoy haciendo un proyecto bastante simple pero que tenía ganas de hacerlo. Consiste en una tira de unos cuantos leds que harán varios juegos de luces.
Par cambiar de un modo a otro simplemente hay que presionar un botón... pero no va del todo fino. Tampoco estoy seguro de que el botón funcione correctamente, ahora mismo lo tengo en la protoboard. Pero me surgió una duda respecto al código. Se supone que al pulsarlo en cualquier momento debería cambiar, pero no lo hace. Ya he dicho que no se si es por problemas "mecánicos" o por código.
Aquí os dejo mi código:
salu2 y gracias
int state=1;
int x=5, y=5;
void setup(){
pinMode(7, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
if(state==1 && digitalRead(7))
{
delay(100);
state=2;
}
else if(state==2 && digitalRead(7))
{
delay(100);
state=3;
}
else if(state==3 && digitalRead(7))
{
delay(100);
state=4;
}
else if(state==4 && digitalRead(7))
{
delay(100);
state=5;
}
else if(state==5 && digitalRead(7))
{
delay(100);
state=6;
}
else if(state==6 && digitalRead(7))
{
delay(100);
state=7;
}
if(state==7 && digitalRead(7))
{
delay(100);
state=8;
}
if(state==8 && digitalRead(7))
{
delay(100);
state=1;
}
switch(state)
{
case 1:
for(int b=8; b<=14; b++)
{
digitalWrite(b, HIGH);
}
break;
case 2:
for(int i=8; i<=14; i++) {
digitalWrite(i, HIGH);
digitalWrite(i-1, LOW);
delay(100);
}
break;
case 3:
for(int j=8; j<=14; j++) {
if(j%2==0)
{
digitalWrite(9, LOW);
digitalWrite(11, LOW);
digitalWrite(13, LOW);
digitalWrite(8, HIGH);
digitalWrite(10, HIGH);
digitalWrite(12, HIGH);
delay(500);
}
else
{
digitalWrite(8, LOW);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
digitalWrite(13, HIGH);
delay(500);
}
}
break;
case 4:
for(int k=13; k>7; k--)
{
digitalWrite(k, HIGH);
delay(100);
}
for(int h=8; h<14; h++)
{
digitalWrite(h, LOW);
delay(100);
}
break;
case 5:
for(int l=13; l>7; l--)
{
digitalWrite(l, HIGH);
delay(100);
}
for(int m=13; m>7; m--)
{
digitalWrite(m, LOW);
delay(100);
}
break;
case 6:
for(int n=8; n<=14; n++)
{
if(n==13)
{
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
}
else
{
digitalWrite(n, HIGH);
digitalWrite(n+1, HIGH);
digitalWrite(n-1, LOW);
delay(500);
digitalRead(7);
}
}
break;
case 7:
x=5;
y=5;
for(int o=8; o<=14; o++)
{
digitalWrite(o, HIGH);
digitalWrite(o+x, HIGH);
delay(150);
x=x-2;
}
for(int p=8; p<=14; p++)
{
digitalWrite(p, LOW);
digitalWrite(p+y, LOW);
delay(150);
y=y-2;
}
break;
case 8:
x=random(8,14);
digitalWrite(x, HIGH);
delay(200);
digitalWrite(x, LOW);
delay(100);
break;
}
}