3.6 KiB
Bottoni
Nota: qui "Bottoni" indica ingressi digitali (pulsanti fisici collegati ai pin). Usa src/config.h
come fonte di verità per i numeri dei pin.
-
Sinistra/Destra: muovi — pulsanti per spostare il giocatore a sinistra o a destra. Pin:
BUTTON_LEFT
= GPIO 15,BUTTON_RIGHT
= GPIO 2 -
Attacco: wobble — il pulsante di attacco innesca l'azione di gioco chiamata "wobble"; nel firmware questo attiva il flag
IN.attack
che viene consumato dal loop. Pin:BUTTON_ATTACK
= GPIO 4 -
Start: pausa/resume — mette in pausa o riprende il gioco; genera un evento a singolo fronte (vedi
IN.startPressedEdge
). Pin:BUTTON_START
= GPIO 5
Seriale (115200)
a
,d
,w
,s
- movimenti/azioni (descritti esaustivamente sotto)debug
- modalità debug (attiva pattern di prova)restart
- riavviastatus
- stampa stato
Nota: all'avvio il firmware esegue un test LED (R, G, B) per verificare connessione e ordine colori.
Dettagli comandi seriali
Formato riga
- Ogni comando è una singola riga terminata da newline (Invio).
- La prima parola è il comando, tutto ciò che segue (dopo il primo spazio) è l'argomento (
arg
).
Esempi
debug
(Invio) — entra in modalità debug del gioco; vedrai un pattern di prova sui LED.restart
(Invio) — riavvia la scheda (equivale a premere reset).status
(Invio) — stampa su seriale informazioni di stato (placeholder).level 2
(Invio) — comando hook futuro: non fa nulla attualmente ma l'argomento viene passato al parser.
Cosa succede nel codice
In pratica:
a
impostaIN.left = true
eIN.right = false
(simula pressione del pulsante "sinistra").d
impostaIN.right = true
eIN.left = false
(simula pressione del pulsante "destra").w
impostaIN.attack = true
(simula l'azione di attacco).s
impostaIN.start = true
eIN.startPressedEdge = true
(simula il pulsante Start e segnala il fronte di salita).
Questi flag vengono letti e gestiti dal ciclo principale (loop
) al passo successivo; ad esempio startPressedEdge
è pensato come evento a singolo fronte e viene resettato dopo l'uso. Per questo motivo i comandi sono "input simulati": non aspettarti un riscontro sincrono immediato via seriale, ma guarda il comportamento del gioco (LED, suoni, spostamenti) per verificare l'effetto.
Se vuoi simulare un "hold" (tenere premuto) devi ripetere il comando periodicamente o modificare il firmware per mantenere il flag attivo fino a nuovo comando.
Cosa aspettarsi (feedback)
- Molti comandi non producono echo/ACK automatico: osserva i LED o il comportamento del gioco per conferma.
debug
attiva pattern visivo;restart
riavvia la board e vedrai il log di boot sulla seriale;status
stampa testo.
Come inviare comandi (PlatformIO)
- Apri il monitor seriale:
platformio device monitor --baud 115200
- Scrivi il comando e premi Invio. Assicurati che il monitor usi newline come terminatore.
Troubleshooting rapido
- Niente succede: verifica porta COM e baud (115200). Assicurati di premere Invio.
- Comandi non riconosciuti: usa minuscolo (il parser confronta esattamente le stringhe come nel codice).
- Porta occupata/instabile: chiudi altre applicazioni che possono accedere alla COM (IDE, tool di upload).
Debug e miglioramenti possibili
- Se vuoi echo/ACK quando un comando viene ricevuto, posso aggiungere una piccola modifica che stampa
OK <cmd>
su seriale. - Per test automatici puoi anche creare uno script che apre la seriale e invia sequenze di comandi per verificare input e reazioni.
Se vuoi che applichi il cambiamento che aggiunge echo/ACK ai comandi, dimmi e preparo la patch.