typestar

Dos temporizadores en Arduino

Dos tareas, dos marcas de tiempo, ninguna espera a la otra.

// Two jobs, two timestamps: neither waits for the other.
unsigned long lastBlink = 0;
unsigned long lastReport = 0;
bool ledOn = false;
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (millis() - lastBlink >= 250) {
    lastBlink = millis();
    ledOn = !ledOn;
    digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);
  }
  if (millis() - lastReport >= 2000) {
    lastReport = millis();
    Serial.println(analogRead(A0));
  }
}

Cómo funciona

  1. Cada tarea es dueña de su marca last... y su intervalo.
  2. El blink corre a 250 ms mientras los reportes van cada 2 s.
  3. Esta es la forma del multitasking sin sistema operativo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
436
Tokens
108
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 100 segundos.

Escribe este fragmento

Paso 2 de 3 en Tiempo; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →