typestar

Interrupciones en Arduino

Una ISR corre al instante en que el pin cae, en pleno loop.

// An interrupt routine runs the instant the pin falls, mid-loop.
const int FLOW_PIN = 2;

volatile unsigned long pulses = 0;

void countPulse() {
  pulses++;  // keep ISRs short; volatile shares the count safely
}

void setup() {
  pinMode(FLOW_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(FLOW_PIN), countPulse, FALLING);
  Serial.begin(9600);
}

void loop() {
  Serial.print("Flow pulses: ");
  Serial.println(pulses);
  delay(1000);
}

Cómo funciona

  1. attachInterrupt ata el flanco de bajada del pin a countPulse.
  2. volatile le avisa al compilador que la ISR cambia pulses.
  3. ISRs cortas: incrementa, sal, reporta desde loop.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
439
Tokens
84
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 84 segundos.

Escribe este fragmento

Paso 1 de 3 en Periféricos; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →