Learning   Examples | Foundations | Hacking | Links

Estrella Fugaz

Este ejemplo muestra como realizar un rayo de luz, o poeticamente hablando, una estrella fugaz, que recorra una linea de LEDs. Podras controlar que tan rapido la estrella se mueve, y que tan larga es su cola. No es muy elegante dado que la cola es igual de brillante que la estrella, y al final se ve como una linea solida a traves de la linea de LEDs.

?v=0

Como funciona

Conectas 11 LEDs a 11 pins digitales del Arduino, a traves de resistencias de 220 Ohm (ver la imagen anterior).

El programa comienza encendiendo LEDs hasta llegar al numero especificado para la cola. Entonces seguira encendiendo LEDs hacia la izquierda (si lo montas y lo miras como se aprecia en la imagen) para hacer que la estrella se mueva, y a borrar desde la derecha, para asegurarse que veamos la cola (de otro modo acabariamos encendiendo todos los LEDs, esto tambien sucedera si el tamaño de la cola es igual o superior a 11).

El tamaño de la cola debe ser relativamente pequeño en comparacion con la cantidad de LEDs para que sea posible verla. Por supuesto, puedes aumentar la cantidad de LEDs utilizando un controlador LED (consulta el tutorial) y por lo tanto, tener colas mas largas.

Código

 /* EstrellaFugáz
  * ------------
  * Estre programa es una variación de KnightRider
  * Reproduce en loop una "Estrella Fugáz" que se muestra
  * en una linea de 11 LEDs directamente conectados a Arduino
  *
  * Puedes controlar la velocidad de la estrella gracias a
  * la variable llamada "waitNextLed"
  *
  * También puedes controlar el largo de la "cola" de la estrella
  * a traves de la variable "tail length"
  * Primero lee el valor de 2 pins analogos conectados a un
  * joystick hecho con 2 potenciometros
  *
  * @author: Cristina Hoffmann
  * @hardware: Cristina Hofmann 
  *
  */
  // Variable declaration

  int pinArray [] = { 2,3,4,5,6,7,8,9,10,11,12 };    // Array where I declare the pins connected to the LEDs
  int controlLed = 13;
  int waitNextLed = 100;  // Time before I light up the next LED
  int tailLength = 4;     // Number of LEDs that stay lit befor I start turning   them off, thus the tail
  int lineSize = 11;       // Number of LEDs connected (which also is the size of the pinArray)

  // I asign the sens of the different Pins
  void setup()
  {
    int i;
    pinMode (controlLed, OUTPUT);
    for (i=0; i< lineSize; i++)
    {
      pinMode(pinArray[i], OUTPUT);
    } 
  }

  // Main loop 
  void loop()
  {
    int i;
    int tailCounter = tailLength;   // I set up the tail length in a counter
    digitalWrite(controlLed, HIGH); // I make sure I enter the loop indicating it with this LED

     for (i=0; i<lineSize; i++)
   {
     digitalWrite(pinArray[i],HIGH); // I light up consecutively the LEDs
     delay(waitNextLed);            // This time variable controles how fast I light them up
     if (tailCounter == 0)
      {
        digitalWrite(pinArray[i-tailLength],LOW); // I turn off the LEDs depending on my tailLength
      }
     else
       if (tailCounter > 0)
         tailCounter--;
   }

    for (i=(lineSize-tailLength); i<lineSize; i++)
   {
     digitalWrite(pinArray[i],LOW); // I turn off the LEDs
     delay(waitNextLed);            // This time variable controles how fast I light them upm, and turn off as well
   }

}

@idea: Cristina Hoffmann

@code: Cristina Hoffmann

@pictures and graphics: Cristina Hoffmann

@date: 20060203 - Rennes - France

Share