typestar

Una máquina de estados en Arduino

Un enum nombra los estados; switch corre exactamente uno por pasada.

// An enum names the states; switch runs exactly one per pass.
enum Mode { IDLE, WATERING, DRAINING };
Mode mode = IDLE;
unsigned long started = 0;

void setup() {
  pinMode(7, OUTPUT);
}

void loop() {
  switch (mode) {
    case IDLE:
      if (analogRead(A0) > 700) { mode = WATERING; started = millis(); }
      break;
    case WATERING:
      digitalWrite(7, HIGH);
      if (millis() - started > 3000) mode = DRAINING;
      break;
    case DRAINING:
      digitalWrite(7, LOW);
      if (analogRead(A0) < 500) mode = IDLE;
      break;
  }
}

Cómo funciona

  1. enum Mode da nombres reales a los tres estados.
  2. Cada case revisa su propia condición de salida y entrega.
  3. started = millis() estampa la transición para el temporizador.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
481
Tokens
124
Ritmo de tres estrellas
60 tpm

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

Escribe este fragmento

Paso 3 de 3 en Funciones y estado; paso 18 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →