mirror of
https://github.com/deunix-educ/voice-assistant.git
synced 2026-10-13 00:11:57 +02:00
Assistant vocal local ESP32 : étapes 1 à 15, et 15b écrite
État du projet au premier commit : - firmware ESP32 : micro I2S, lecture anti-gigue, MQTT (état retenu, testament), mains libres, domotique de démonstration, chien de garde, présence du serveur ; - serveur Python : sessions, VAD, faster-whisper, pyannote, identification, droits par profil, domotique, mot de réveil, Piper ; - broker Mosquitto : configuration, comptes et ACL (non activés en développement) ; - étape 15b écrite, en attente d'essai : agent MQTT pour machines Linux. Étapes 1 à 15 validées. 203 tests, pyright sans erreur. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#include "StatusLed.h"
|
||||
|
||||
StatusLed::StatusLed(int pin) : _pin(pin) {}
|
||||
|
||||
void StatusLed::begin() {
|
||||
pinMode(_pin, OUTPUT);
|
||||
write(false);
|
||||
}
|
||||
|
||||
void StatusLed::on() {
|
||||
_blinking = false;
|
||||
write(true);
|
||||
}
|
||||
|
||||
void StatusLed::off() {
|
||||
_blinking = false;
|
||||
write(false);
|
||||
}
|
||||
|
||||
void StatusLed::blink(uint32_t periodMs, uint32_t onMs) {
|
||||
const uint32_t lit = onMs == 0 ? periodMs / 2 : onMs;
|
||||
if (_blinking && _periodMs == periodMs && _onMs == lit) {
|
||||
return; // déjà dans ce mode : ne pas réinitialiser la phase
|
||||
}
|
||||
_blinking = true;
|
||||
_periodMs = periodMs;
|
||||
_onMs = lit;
|
||||
_lastToggleMs = millis();
|
||||
}
|
||||
|
||||
void StatusLed::update() {
|
||||
if (!_blinking) {
|
||||
return;
|
||||
}
|
||||
|
||||
const uint32_t now = millis();
|
||||
const uint32_t phase = _state ? _onMs : (_periodMs - _onMs); // durée de l'état courant
|
||||
if ((now - _lastToggleMs) >= phase) {
|
||||
_lastToggleMs = now;
|
||||
write(!_state);
|
||||
}
|
||||
}
|
||||
|
||||
void StatusLed::write(bool state) {
|
||||
_state = state;
|
||||
digitalWrite(_pin, state ? HIGH : LOW);
|
||||
}
|
||||
Reference in New Issue
Block a user