Nota
¡Hola, bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Vistas previas exclusivas: Obtén acceso anticipado a nuevos anuncios de productos y avances.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones festivas y sorteos: Participa en sorteos y promociones especiales de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
1.11 Intervalo
Resumen
A veces necesitas hacer dos cosas al mismo tiempo. Por ejemplo, puedes querer hacer parpadear un LED mientras lees la pulsación de un botón. En este caso, no puedes usar delay(), porque Arduino pausa tu programa durante el delay(). Si el botón se presiona mientras Arduino está pausado esperando que termine el delay(), tu programa no detectará la pulsación.
Este ejemplo demuestra cómo hacer parpadear un LED sin usar delay(). Enciende el LED y luego registra el tiempo. Después, cada vez que pasa por el loop(), verifica si ha pasado el tiempo deseado para el parpadeo. Si es así, cambia el estado del LED y registra el nuevo tiempo. De esta forma, el LED parpadea continuamente mientras la ejecución del programa no se detiene en ninguna instrucción.
Una analogía sería calentar una pizza en el microondas mientras esperas un correo electrónico importante. Colocas la pizza en el microondas y lo programas para 10 minutos. La analogía de usar delay() sería quedarte sentado frente al microondas mirando el temporizador contando desde los 10 minutos hasta que llegue a cero. Si el correo importante llega durante ese tiempo, lo perderías.
Lo que harías en la vida real sería poner la pizza en el microondas, luego revisar tu correo, y tal vez hacer algo más (que no tome mucho tiempo). De vez en cuando, volverías al microondas para ver si el temporizador ha llegado a cero, indicando que tu pizza está lista.
Componentes necesarios
Circuito Fritzing
En este ejemplo, usamos el pin digital 9 para controlar el LED y conectamos un lado de la resistencia a los pines digitales correspondientes. El pin más largo del LED (el ánodo) se conecta al otro lado de la resistencia. El pin más corto (el cátodo) del LED se conecta a GND.
Diagrama esquemático
Código
Nota
Puedes abrir el archivo
1.11_interval.inoen la rutasunfounder_vincent_kit_for_arduino\code\1.11_intervaldirectamente.O copiar este código en el IDE de Arduino 1/2.
Después de cargar el código en la placa Mega2560, verás cómo el LED parpadea.
Análisis del código
Declara el pin digital 9 como ledPin.
const int ledPin = 9;
Establece el estado de ledState en LOW para apagar el LED.
int ledState = LOW;
Inicializa una variable llamada previousMillis para almacenar el tiempo de operación previo del microcontrolador.
unsigned long previousMillis = 0;
Establece el tiempo de intervalo a 1000 ms (milisegundos).
const long interval = 1000;
Configura ledPin en modo de salida.
pinMode(ledPin, OUTPUT);
En loop(), declara currentMillis para almacenar el tiempo actual.
unsigned long currentMillis = millis();
Cuando el intervalo entre el tiempo de operación actual y el último tiempo de actualización sea mayor a 1000 ms, se activan ciertas funciones. Al mismo tiempo, actualiza previousMillis al tiempo actual para el próximo evento, que sucederá 1 segundo después.
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // guarda el último tiempo en que parpadeó el LED
//...
}
Aquí, las funciones ejecutadas en intervalos cambian el estado del LED.
if (ledState == LOW)
{ledState = HIGH;}
else
{ledState = LOW;}
digitalWrite(ledPin, ledState);
Imagen del fenómeno