6. 1.5 Exercice : contrôler la vitesse de clignotement via commande série
L'objectif est de changer la période de clignotement à la volée, sans recompiler, en envoyant une commande dans le moniteur série.
Comportement attendu :
- Envoyer 200 → la LED clignote à 200 ms
- Envoyer 1000 → la LED clignote à 1000 ms
- Envoyer stop → la LED s'éteint et reste éteinte
- Envoyer start → reprise du clignotement
// Version exercice avec commandes stop/start
#include <Arduino.h>
#define LED_PIN 2
uint32_t blink_ms = 500;
bool led_active = true;
void setup() {
Serial.begin(115200);
delay(1000);
pinMode(LED_PIN, OUTPUT);
Serial.println("Hello Zacus — commandes: <ms>, stop, start");
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "stop") {
led_active = false;
digitalWrite(LED_PIN, LOW);
Serial.println("LED stopped.");
} else if (cmd == "start") {
led_active = true;
Serial.println("LED started.");
} else {
uint32_t val = cmd.toInt();
if (val >= 50 && val <= 5000) {
blink_ms = val;
Serial.printf("Blink period set to %u ms\n", blink_ms);
} else {
Serial.println("Invalid command. Use: <50-5000>, stop, start");
}
}
}
if (led_active) {
digitalWrite(LED_PIN, HIGH);
delay(blink_ms);
digitalWrite(LED_PIN, LOW);
delay(blink_ms);
} else {
delay(100); // avoid busy-loop
}
}