my code stock.com

Alejandro Mascotto

Lección 04 - Control de tiempos
by Alejandro Mascotto

Parpadeo de un Led sin utilizar la función delay()

Snippet options

Download: Download snippet as leccion-04-control-de-tiempos.txt.
Copy snippet: For this you need a free my code stock.com account.
Embed code : You will find the embed code for this snippet at the end of the page, if you want to embed it into a website or a blog!

/* Parpadeo sin uso de la función Delay
 
 Encender y apagar un diodo emisor de luz (LED) conectado a un pin digital
 sin recurrir a la función delay(). Esto significa que puede estar ejecutándose
 otro código al mismo tiempo sin ser interrumpido por el código del LED.
 Hay que tener en cuenta que la instrucción delay() detiene todo el flujo de programa.
 
 El circuito:
 * LED conectado desde el pin 13 a tierra.
 * Nota: en la mayoría de los Arduinos, ya existe un LED incorporado en la placa 
   y conectado al pin 13, y por lo tanto no se requiere la adición de hardware.
  
 creado en 2005
 por David A. Mellis
 modificado 8 Feb 2010
 por Paul Stoffregen
 
 El código de este ejemplo pertenece al dominio público
 
 http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
 
   ========================================================================
                         DECLARACION DE CONSTANTES
   Las constantes no cambian. Se utilizan aquí para fijar los números de pin
   ========================================================================*/

const int pinLed = 13;          // Se asigna el pin 13 a la constante 'pinLed'

/* ========================================================================
                         DECLARACION DE VARIABLES
   Las variables cambiarán. Puesto que vamos a utilizar la función millis(), y esta devuelve
   el valor como de tipo unsigned long, las variables 'milisegAnterior' e 'intervalo' deben 
   ser también de tipo 'long', pues se realizarán operaciones entre ellas,
   y los tipos de datos deben ser compatibles.
   La función millis() devuelve el tiempo medido en milisegundos desde que se energizó
   el módulo Arduino (desde su encendido). El tiempo, así medido (en milisegundos), crece rápidamente, 
   y genera valores mayores al que podria almacenarse en una variable de tipo entero (desde 
   -32768 hasta 32767). Es por ello que se requiere de un tipo de variable que pueda almacenar 
   números grandes. El tipo long puede almacenar valores entre -2.147.483.648 y 2.147.483.647,
   mientras que el unsigned long puede almacenar desde 0 hasta 4.294.967.295 (2^32-1).
   ========================================================================*/

int estadoLed = LOW;            // 'estadoLed' se utiliza para guardar el estado anterior del led
long milisegAnterior = 0;       // Esta variable almacenará cuándo se actualizó el LED por última vez
long intervalo = 1000;          // Intervalo de tiempo para el parpadeo (en milisegundos)

void setup() {                  // Función utilizada para las configuraciones previas
  pinMode(pinLed, OUTPUT);      // Establece al pin como salida
}

void loop() {                   // Función principal que se ejecuta repetidamente
                                                     // La función revisa si es tiempo de hacer 
                                                     //// parpadear al LED, esto es, si ha transcurrido
  unsigned long milisegActual = millis();            //// un tiempo mayor al fijado por 'intervalo'.
                                                     //// entre el tiempo del parapadeo anterior 
  if(milisegActual - milisegAnterior > intervalo) {  //// y el actual calculado como diferencia

    milisegAnterior = milisegActual;                 // Registra el tiempo del último parpadeo
                                                     //// es decir, reemplaza al viejo por el nuevo
    if (estadoLed == LOW)                            // Si el LED esta apagado
      estadoLed = HIGH;                              //// corresponde encenderlo
    else                                             // Si no esta apagado entonces esta encendido
      estadoLed = LOW;                               //// y corresponde apagarlo

    digitalWrite(pinLed, estadoLed);                 // escribe el valor de 'estadoLED' en el puerto 'pinLed'
  }
}

Create a free my code stock.com account now.

my code stok.com is a free service, which allows you to save and manage code snippes of any kind and programming language. We provide many advantages for your daily work with code-snippets, also for your teamwork. Give it a try!

Find out more and register now

You can customize the height of iFrame-Codes as needed! You can find more infos in our API Reference for iframe Embeds.