1.5 Exercice : contrôler la vitesse de clignotement via commande série

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
    }
}

Se connecter pour suivre votre progression.