Blink sin delay en Arduino
millis nunca bloquea: compara marcas en vez de dormir.
// millis never blocks: compare timestamps instead of sleeping.
const unsigned long INTERVAL_MS = 750;
unsigned long lastToggle = 0;
bool ledOn = false;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
unsigned long now = millis();
// Subtraction stays correct even when millis wraps around.
if (now - lastToggle >= INTERVAL_MS) {
lastToggle = now;
ledOn = !ledOn;
digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);
}
}
Cómo funciona
millis()es el reloj libre desde el encendido.now - lastToggle >= INTERVAL_MSsobrevive al desborde de 49 días.- El loop queda libre para otro trabajo entre parpadeos.
Palabras clave y builtins usados aquí
HIGHLED_BUILTINLOWOUTPUTboolconstfalseiflongloopsetupunsignedvoid
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 430
- Tokens
- 78
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 72 segundos.
Paso 1 de 3 en Tiempo; paso 10 de 27 en Fundamentos del lenguaje.