13 de mayo de 2012

Arduino: Diversión con 8 LEDs

Siguiendo la tónica del anterior, seguimos con el siguiente ejercicio propuesto por oomlout: http://ardx.org/CIRC02

Hemos colocado 8 LEDs (con sus respectivas resistencias de 330Ω) y las hemos conectado a los pines 2 a 9 de nuestra Arduino. Tras programar un poco, aquí vemos el resultado:


Y aquí el código que he utilizado para pasar de una LED a la siguiente:

/*
 * Secuencias de LEDs
 *
 */

// Array de LEDs >> Indico en que pin va cada una de las 8 LEDS.
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; 
// Por ejemplo, la LED 2 esta en el pin 4, o la LED 0 esta en el pin 2.

void setup()
{
  for(int i = 0; i < 8; i++) 
    {
      pinMode(ledPins[i], OUTPUT); // recorro los pines de las LED y los cambio 
                                   // a SALIDA
    }
}

void loop()
{
  // La siguiente funcion enciende una LED tras otra y luego va apagando
  unaTrasOtra();
}

/*
 * unaTrasOtra() - Enciende una LED, se detiene un tiempo 
 * "retardo" y enciende la siguiente LED. Cuando esten todas 
 * hara lo mismo pero apagandolas.
 *
 */
void unaTrasOtra()
{
  int retardo = 100; // este es el tiempo de pausa entre LEDs
  
  for(int i = 0; i < 8; i++)
    {
      digitalWrite(ledPins[i], HIGH); // Enciendo LED
      delay(retardo); // Espero
    }
  for(int i = 0; i < 8; i++)
    {
      digitalWrite(ledPins[i], LOW); // Apago LED
      delay(retardo); // Espero
    }
}

En el enlace que he indicado al principio, vemos más animaciones. Jugando un poco podemos crear muchas más.