martes, 4 de marzo de 2014

Parpadeo Led sin Delay

          Ya hemos visto como hacer parpadear un led, ¿para que necesitamos entonces conocer otra forma de hacerlo? Pues muy simple. En ocasiones es necesario hacerlo parpadear mientras realizamos otra tarea. Este es el caso si hacemos unas luces intermitentes accionadas mediante botones, que será como comencemos a a manejar nuestro coche.

          El diseño del prototipo es exactamente el mismo que cuando usamos el delay, sólo que ahora estoy usando los componentes míos propios (ya me están llegando las piezas del puzzle) y por ello hacemos uso del Arduino Mega (me ha llegado antes que el Uno, no me lo creo ni yo) y un led ahora de color azul.


          La idea es muy sencilla, tendremos una variable con intervalo de tiempo y un instante inicial. Por cada vuelta por la función 'loop' comprobamos el tiempo actual y si la diferencia es mayor que el intervalo preestablecido pasamos a actualizar el estado del led, lo apagamos si estaba encendido o lo encendemos si estaba apagado.

//Definimos el pin para el led
#define led   12
//Estado del led
int estadoLed = LOW;
// Usamos unsined long vara variables de tiempo
// guarda el momento en el que el led fue //actualizado (es decir, cuando se apagó o //encendió por última vez)

unsigned long tiempoPrevio = 0;      
//Intervalo de tiempo del parpadeo
const long intervalo = 600;        
// Función 'Setup'
void setup() {
  // Inicializamos el pin 'led' como salida
  pinMode(led, OUTPUT);    
}
// Función 'Loop'
void loop(){
  //Obtenemos el tiempo actual
  unsigned long tiempoActual = millis();
  //Si la diferencia es mayor que el intervalo de //tiempo de parpadeo es cuando actualizamos el //estado del led
  if(tiempoActual - tiempoPrevio >= intervalo) {
    //Guardamos el instante de tiempo
    tiempoPrevio = tiempoActual;
    //Si el led esta encendido lo apagamos y //viceversa
    if (estadoLed == LOW)
      estadoLed = HIGH;
    else
      estadoLed = LOW;
    // actualizamos el led
    digitalWrite(led, estadoLed);
  }
}

          A partir de ahora comenzaré a hacer cosas un poco más complejas, haciendo uso de más componentes ya que me están llegando las piezas con las que montaré el coche completo. Os dejo el resultado en un video: