MaPaLo76
4349b37f05
feat(display): implement DisplayManager with raw MD_MAX72XX
...
- Add include/display_manager.h: DisplayManager class declaration
- Two-zone layout: Zone 0 (top, laser time), Zone 1 (bottom, countdown/status)
- showLaserTime(), showCountdown(), showIdle(), showStatus(), setBrightness()
- rotateCCW() bitmap transformation for 90 deg physical module rotation
- charBitmap() for 17-character set (0-9, space, dash, dot, special chars)
- Add src/display_manager.cpp: full implementation
- Double-init pattern for SPI power stability
- showLaserTime() format: <10 -> ' x.x', <100 -> 'xx.x', <1000 -> ' xxx', else 'xxxx'
- showCountdown() right-aligned 4-char format
- All methods use writeZone() -> writeChar() -> rotateCCW() -> MD_MAX72XX
- Add test_sketches/test_display_manager.cpp: 6-step verification test
- allLedsOn/Off, showLaserTime (12 boundary values), showCountdown 5->0
- showIdle, showStatus (Err/AP/WiFi/oF), live simulation loop
- Update platformio.ini: add test-display-mgr environment
- Update src/main.cpp: integrate display.begin/showIdle/update
- Update Implementation-Plan.md: mark Phase 4 tasks 4.1-4.3 complete
Tested on hardware: all 6 test steps passed
2026-02-22 14:00:54 +01:00
MaPaLo76
c63cace1ae
feat(wifi): implement WiFiManager connection handling
...
- include/wifi_connector.h: WifiConnector class with WifiStatus enum,
onStatusChange callback, begin/loop/reset methods
- src/wifi_connector.cpp: autoConnect with AP timeout and restart,
reconnect logic on connection loss, printToSerial diagnostics
- src/main.cpp: call wifiConnector.begin() and loop()
- test_sketches/test_wifi.cpp: first-connect via captive portal,
auto-reconnect after reboot, BOOT-button (3s) resets credentials
- platformio.ini: add test-wifi environment
- Implementation-Plan.md: mark tasks 3.1-3.3 complete
2026-02-22 13:50:07 +01:00
MaPaLo76
68c3ce54b3
feat(settings): implement NVS persistence via Preferences
...
- include/settings.h: Settings struct + SettingsManager class with
begin/load/save/reset and atomic save methods per value
- src/settings.cpp: input validation, clamping, default fallbacks;
password masked in printToSerial()
- src/main.cpp: call settings.begin() and printToSerial() on startup
- test_sketches/test_nvs.cpp: two-phase NVS persistence test;
write known values, reboot, verify all 7 values survive (PASS)
- platformio.ini: add test-nvs environment with settings.cpp in filter
- Implementation-Plan.md: mark tasks 1.4 and 2.1/2.2 complete
2026-02-22 13:35:44 +01:00
MaPaLo76
6ac33f459d
feat(phase1): complete hardware setup, display and button test sketches
...
- platformio.ini: add all 8 libraries via Git URLs, add test-display and
test-button environments, reduce SPI clock to 1 MHz for stability
- include/config.h: add pin definitions, DISPLAY_HW_TYPE=GENERIC_HW,
MQTT topics, NVS keys and logging macros
- src/main.cpp: add minimal startup skeleton with config.h include
- test_sketches/test_display.cpp: diagnostic sketch showing 0-based module
index; GENERIC_HW verified with 90 deg CCW software rotation
- test_sketches/test_button.cpp: GPIO INPUT_PULLUP test; LOW_ACTIVE confirmed
- test_sketches/README.md: add wiring tables, flash commands, results table
- README.md: update HW type to GENERIC_HW, add power supply note (0.5A /
2.5W measured, external 5V PSU required), add Conventional Commits section
- Implementation-Plan.md: mark tasks 1.1-1.5 as complete
BREAKING CHANGE: none
2026-02-22 13:20:52 +01:00