No description
| .vscode | ||
| docs | ||
| src | ||
| .gitignore | ||
| inspect-output.txt | ||
| platformio.ini | ||
| README.md | ||
README - TWANG ESP32
Scopo
Repository per il gioco TWANG su ESP32. Ho migrato il controllo LED da FastLED a NeoPixelBus per evitare problemi specifici su ESP32. Questo README spiega come verificare che la build funzioni e come testare la striscia LED e gli input.
Checklist rapida (stato)
- Migrazione FastLED -> NeoPixelBus: Done
- Rimozione build flags FastLED: Done
LedControlleraggiornato per NeoPixelBus: DoneGameEngineaggiornato per usareRgbColor: Done- Correzione
Level::resetsignature: Done - Build PlatformIO: PASS (firmware generato)
File modificati / aggiunti
platformio.ini— dipendenza aggiornata amakuna/NeoPixelBuse rimozione flags FastLEDsrc/hardware/LedController.h— nuova implementazione con NeoPixelBussrc/game/GameEngine.cpp— sostituiti i riferimentiCRGB->RgbColorsrc/game/Level.h—reset(Player &p)ora chiamap.reset()senza argomentidocs/CONTROLS.md— piccola correzione headingREADME.md— questo file
Come verificare la build (locale)
Apri una PowerShell (pwsh) nella cartella del progetto (root dove c'è platformio.ini) e lancia:
# compilazione
platformio run
# upload (se la board è collegata e vuoi flashare)
platformio run --target upload
# apertura seriale per test realtime (115200)
platformio device monitor --baud 115200
Cosa controllare dopo la build
platformio runtermina con "SUCCESS" e viene generatofirmware.bin.- Non devono comparire errori di link o simboli non definiti.
- Se vuoi verificare comportamento LED prima di caricare, puoi comunque aprire il serial monitor e inviare comandi (vedi sotto).
Test runtime (veloce)
- Collega l'ESP32 al PC via USB.
- Apri il monitor seriale:
platformio device monitor --baud 115200
- Invia il comando
debugseguito da invio: questo attiva la modalità debug nel gioco e dovrebbe mostrare un pixel bianco che si muove lungo la striscia.
Comandi seriali disponibili
debug— entra in modalità debug (pattern di prova)restart— riavvia la boarda,d,w,s— movimenti/azioni (utili per test da seriale)status— stampa stato (placeholder)
Controlli fisici
BUTTON_LEFT-> GPIO 15BUTTON_RIGHT-> GPIO 2BUTTON_ATTACK-> GPIO 4BUTTON_START-> GPIO 5
Nota hardware sui LED
- Usa resistenza 330-470 Ω sul line DATA tra ESP32 e prima LED consigliata.
- Usa condensatore 1000 µF vicino alla strip tra +V e GND per stabilizzare alimentazione.
- Assicurati che l'alimentazione della strip supporti il numero di LED (circa 60mA per LED a piena intensità RGB).
Cose da verificare se qualcosa va storto
- Errori in compilazione: controlla l'output di
platformio rune cerca file/righe menzionate. - Problemi con LED che non accendono: verifica pin
DATA_PINinsrc/config.he il cablaggio fisico. - Striscia parzialmente corretta o colori sbagliati: prova a cambiare
NeoGrbFeatureinLedController.h(alcuni LED usano GRB o RGB) — apertura possibile modifica:NeoRgbFeature/NeoGrbFeature. - Problemi di crash o reset: verifica consumo memoria (PlatformIO log mostra RAM/Flash) e alimentazione.
Note tecniche rilevanti
LedControllerusanew NeoPixelBus<>dinamico per evitare static init order problems; non ci sono delete espliciti perché la durata è quella della app.fadeAllè implementato manualmente leggendoGetPixelColore scalando componenti.Player::reset()non accetta parametri: ogni chiamata nel progetto è stata adattata per usare la versione senza argomenti (correzioni inLevel.h).
Miglioramenti possibili
- Aggiungere un semplice pattern di test automatico all'avvio per diagnosticare la strip senza interazione seriale.
- Implementare un piccolo unit-test harness (non comune per Arduino, ma possibile con framework) per la logica core.
Se vuoi che proceda con l'upload automatico o ad aggiungere il pattern di test all'avvio, dimmelo e lo aggiungo subito.