Hola Jorge, he conseguido programar la ráfaga, pero no consigo se repita, al acabar se queda parado en el ultimo led encendido, creo es problema de los corchetes ({ }), se llaman así?, eliminándolos creo la ráfaga con los 4 últimos pero sin parar, puedes ayudarme? Gracias, te mando el programa que yo he hecho:
const int led1=12;
const int led2=11;
const int led3=9;
const int led4=7;
const int led5=5;
En principio no veo ningún problema con las llaves ({ }), ya que están cerradas todas las llaves que hs abierto. Además, en caso de no cerrar una llave abierta generaría un error de compilación y no sería posible ejecutar el código.
En tu caso, el código que has creado al ejecutar el pulsador enciende cada led durante medio segundo y a continuación lo apaga, quedándose el led5 encendido.
Para solucionar esto, deberías apagar el led5 tras el delay:
delay(500);
digitalWrite(led5, 0);
}
}
Ahora, si quieres que se repita un número de veces la secuencia, habría que meter todo el código que hay dentro de la condición if() del bucle loop() en otro bucle, sólo que esto lo verás en la lección 5, aunque puedes probarlo si quieres aunque no lo entiendas!! Para ello y como comento, puedes meter el código que engloba la condición del pulsador dentro de la siguiente sentencia for():
for(int i = 0; i < 10; i++){
//aquí el encendido y apagado de los leds
}
En este caso se repetirá la secuencia durante 10 veces.
Espero haberte ayudado!
3 Comentarios
Hola Jorge, he conseguido programar la ráfaga, pero no consigo se repita, al acabar se queda parado en el ultimo led encendido, creo es problema de los corchetes ({ }), se llaman así?, eliminándolos creo la ráfaga con los 4 últimos pero sin parar, puedes ayudarme? Gracias, te mando el programa que yo he hecho:
const int led1=12;
const int led2=11;
const int led3=9;
const int led4=7;
const int led5=5;
const int pulsador=3;
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
// put your setup code here, to run once:
}
void loop() {
int valorPulsador=digitalRead(pulsador);
if(valorPulsador==1){
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
//enciende led1
delay(500);
digitalWrite(led1,0);
digitalWrite(led2,1);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
//enciende led2
delay(500);
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,1);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
delay(500);
//enciende led3
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,1);
digitalWrite(led5,LOW);
delay(500);
//enciende led4
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,1);
delay(500);}}
//enciende led5
Hola Rafa,
En principio no veo ningún problema con las llaves ({ }), ya que están cerradas todas las llaves que hs abierto. Además, en caso de no cerrar una llave abierta generaría un error de compilación y no sería posible ejecutar el código.
En tu caso, el código que has creado al ejecutar el pulsador enciende cada led durante medio segundo y a continuación lo apaga, quedándose el led5 encendido.
Para solucionar esto, deberías apagar el led5 tras el delay:
delay(500);
digitalWrite(led5, 0);
}
}
Ahora, si quieres que se repita un número de veces la secuencia, habría que meter todo el código que hay dentro de la condición if() del bucle loop() en otro bucle, sólo que esto lo verás en la lección 5, aunque puedes probarlo si quieres aunque no lo entiendas!! Para ello y como comento, puedes meter el código que engloba la condición del pulsador dentro de la siguiente sentencia for():
for(int i = 0; i < 10; i++){ //aquí el encendido y apagado de los leds } En este caso se repetirá la secuencia durante 10 veces. Espero haberte ayudado!
Muchas gracias, ahora si.