Files

16 lines
1015 B
Markdown

# Architektur V1
`main.cpp` besitzt nur den nicht-blockierenden Scheduler: Motor, Netzwerk, Web und OTA werden in jedem Loop-Durchlauf aktualisiert.
- `ConfigManager`: LittleFS und JSON-Konfiguration, Defaults, Factory Reset
- `StepperController`: einzige Abstraktion fuer AccelStepper und Motorzustand
- `NetworkManager`: STA-Verbindung mit Timeout oder lokaler AP
- `WebServerManager`: Status, Befehle, Konfiguration und Firmware-Upload
- `OtaManager`: ArduinoOTA und Update-Sicherheitsstopp
Web-Kommandos rufen ausschliesslich `StepperController` auf. MQTT kann spaeter als weiterer Adapter dieselbe API verwenden. V1 fuehrt relative Schritte und die Anzeige einer relativen Position; absolute Positionierung und Homing sind V2.
## Zustandsmodell
`IDLE`, `MOVING`, `CONTINUOUS`, `LIMIT_LEFT`, `LIMIT_RIGHT`, `ERROR`. Ein Richtungsbefehl wird bei ausgeloestem Limit vor dem Start abgewiesen. Wird ein Limit waehrend der Fahrt erkannt, werden Ausgaenge deaktiviert und der Motor in den Limit-Zustand gesetzt.