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
enum Modeda nombres reales a los tres estados.- Cada case revisa su propia condición de salida y entrega.
started = millis()estampa la transición para el temporizador.
Palabras clave y builtins usados aquí
HIGHLOWOUTPUTbreakcaseenumiflongloopsetupswitchunsignedvoid
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.
Paso 3 de 3 en Funciones y estado; paso 18 de 27 en Fundamentos del lenguaje.