miércoles, 23 de mayo de 2012

Parpadear un LED sin retraso


Parpadeo sin retraso

Algunas veces tu necesitas dos cosas a la vez. Por ejemplo, tu necesitas hacer parpadear un LED mientras lees otra entrada. En este caso, tu no puedes usar delay(), si lo haces se detendrá todo lo demás del programa mientras el LED parpadea. En este programa se demuestra como hacer que el LED parpadee sin necesidad de un delay().

¿Qué se necesita?
Arduino Board
LED
Resistencia de 220 ohms


A continuación se muestra el esquema de como debe ir conectado el LED y la resistencia en el Arduino.






Para armar el circuido, toma el LED e insértalo en el Arduino, la patita positiva en el pin 3 y la patita negativa que es la más corta del LED a tierra. Ahora conecta tu Arduino a la computadora y corre el programa Arduino con el siguiente código.

Código

En este código se utiliza la función millis(), es un comando que regresa el número de milisegundos desde que el Arduino empieza a correr el programa para hacer parpadear el LED.


const int ledPin = 13; // el # de pin donde se encuentra el LED

int ledState = LOW; // estado del LED 
long previousMillis = 0; // guarda la ultima vez que el LED se actualiza

long interval = 1000; // intervalo de tiempo cuando el LED parpadea

void setup() {
pinMode(ledPin, OUTPUT); 
}

void loop()
{


unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {
// guarda la ultima vez que el LED parpadea
previousMillis = currentMillis; 

// si el LED está apagado, lo prende y viceversa
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;

// establecer el LED con el estado de la variable
digitalWrite(ledPin, ledState);
}
}

2 comentarios:

  1. Hola, tengo una pregunta, estoy haciendo un programa con "case" para apagar y encender leds con mando a distancia, quiero hacer intermitentes pero no con "delay" por que hasta que no acaba me congela todo el programa, me han hablado de "millis" pero no tengo idea de como cambiarlo, podrías decirme como seria??

    ResponderEliminar
  2. Puedes adaptar fácilmente el código que está lineas arriba....

    ResponderEliminar