Saltar la navegación

Con BUCLE

Coche fantástico con bucle FOR

Vamos a mejorar el código introduciendo el uso del bucle FOR

Las conexiones son las mismas. Se pueden añadir más leds pero hay que modificar un poquito el programa. ¿Te animas?

---------------------------------------------------------------------------------------------

// Coche fantástico usando bucle FOR

void setup() {
  // initialize the digital pins as an output
    int i;
    for (i=2;i<8;++i) {        // Se repite desde que i=2 hasta 7, con incrementos de 1
           pinMode( i, OUTPUT) ;
  }
}

void loop() {
    int i;
    for (i=2;i<8;++i) {
       digitalWrite( i , HIGH) ;
           delay (500) ;
         digitalWrite( i , LOW);
           delay (500) ;
                }
}

---------------------------------------------------------------------------------------------
Otra mejora, ahora con rebote. En ambas direcciones
---------------------------------------------------------------------------------------------
// Coche fantástico usando bucle FOR
// Ahora con efecto rebote

void setup() {
  // initialize the digital pins as an output
  int i;
  for (i=2;i<8;++i) {
      pinMode( i, OUTPUT) ;
  }
}

void loop() {
    int i;
    for (i=2;i<8;++i) {
       digitalWrite( i , HIGH) ;
           delay (500) ;
         digitalWrite( i , LOW);
           delay (500) ;
        }
        for (i=7;i>1;--i) {
       digitalWrite( i , HIGH) ;
           delay (500) ;
         digitalWrite( i , LOW);
           delay (500) ;
        }
}

La Estrella fugaz

--------------------------------------------------------------------------------------------
Una variante del coche fantástico. También con bucle FOR (Pregunta al profe una variante con sólo una resistencia)
---------------------------------------------------------------------------------------------

/* ESTRELLA FUGAZ
*  
* Este programa es una variante del ejemplo del coche
* fantástico. Muestra mediante un loop una estrella
* fugaz que es dibujada en una linea de LEDs
*
* Puedes controlar la velocidad a la que la estrella
* se mueve gracias a una variable llamada "waitNextLed"
*
* También puedes controlar la longitud de la cola
* de la estrella a través de la variable "tail length"
*
* @author: Cristina Hoffmann
* @hardware: Cristina Hofmann
*/

// Declaración de variables
int pinArray [] = { 2,3,4,5,6,7}; // Declaración de los PIN-es mediante un array. Se pueden añadir más leds
int controlLed = 13; // LED de control
int waitNextLed = 100; // Tiempo antes de encender el siguiente LED
int tailLength = 4; // Número de LED-s que permanecen encendidos antes de empezar a apagarlos para formar la cola
int lineSize = 11; // Número de LED-s conectados (que es también el tamaño del array)
 
void setup() // Configuración de los PIN-es como salida digital
{
int i;
  pinMode (controlLed, OUTPUT);
  for (i=0; i< lineSize; i++)
  {
  pinMode(pinArray[i], OUTPUT);
  }
}
 
void loop()
{
int i;
int tailCounter = tailLength; // Se establece la longitud de la cola en un contador
digitalWrite(controlLed, HIGH); // Se enciende el LED de control para indicar el inicio del loop
 
for (i=0; i<lineSize; i++)
   {
   digitalWrite(pinArray[i],HIGH); // Se encienden consecutivamente los LED
   delay(waitNextLed); // Esta variable de tiempo controla la velocidad a la que se mueve la estrella
   if (tailCounter == 0)
      {
      digitalWrite(pinArray[i-tailLength],LOW); // Se apagan los LED-s en función de la longitud de la cola.
      }
   else
      if (tailCounter > 0)
      tailCounter--;
      }

   for (i=(lineSize-tailLength); i < lineSize; i++)
     {
     digitalWrite(pinArray[i],LOW); // Se apagan los LED
     delay(waitNextLed); // Esta variable de tiempo controla la velocidad a la que se mueve la estrella
     }
}