Esercizio con il controller Nintendo SNES in C / C ++ con Stm32duino
Descrizione
La console Nintendo Super NES (o SNES) è controllata da un controller con le seguenti caratteristiche:
- Una croce direzionale (su, giù, destra, sinistra)
- Quattro pulsanti alla sua destra (A, B, X e Y)
- Due pulsanti al centro (START e SELECT)
- Due pulsanti sul bordo anteriore (L e R)
Comunica col protocollo SPI con la console. È un protocollo di comunicazione che funziona sul principio del master che invia le informazioni (qui il controller) e dello slave che le riceve (qui la console sostituita dalla scheda Nucleo).
Montaggio
Per collegare il controller alla scheda Nucleo, utilizziamo 5 fili e una resistenza da 10kΩ. Possiamo benissimo collegare il controller alla scheda Nucleo senza usare resistenza. Tuttavia, nel nostro caso, verrà utilizzato per rilevare che il controller è disconnesso.
La connessione del controller SNES è organizzata come segue:
Controller SNES | ST Nucleo |
---|---|
5V | 5V |
CLOCK | D3 |
LATCH | D2 |
DATA | D4 |
GND | GND |
Senza dimenticare la resistenza che si pone tra GND e DATA.
Programma
Per semplificare il codice utilizziamo una libreria esterna. Per recuperare questa libreria, segui questo link.È contenuto in un file .zip che deve essere decompresso e quindi spostato nella cartella con il suo contenuto per inserirlo in \Documents\Arduino\libraries. Il file di progetto Arduino è disponibile seguendo questo link.
Passo 1 : Per far funzionare il programma, dobbiamo prima importare la libreria scaricata in precedenza. Per farlo, dobbiamo importarlo all’inizio del nostro codice in questo modo:
#include <Snes.h>
Creiamo anche solo una variabile * snes * che recupera le informazioni restituite dalla libreria.
Snes snes;
Passo 2 : Quindi inizializziamo la libreria che sarà quindi responsabile dell’attivazione della comunicazione seriale e dell’inizializzazione della comunicazione con il controller.
void setup()
{
snes.init();
}
Passo 3 : Infine visualizziamo i dati acquisiti. La libreria è responsabile dell’acquisizione dei dati e della visualizzazione diretta del risultato.
void loop()
{
//Per recuperare i dati e visualizzarli
snes.print();
}
Passo 3 (bis) : Se vogliamo recuperare i dati visualizzando solo il valore grezzo ricevuto:
void loop()
{
//Per recuperare solo i dati
int donnee = snes.data();
Serial.println(donnee);
delay(250);
}
Notare che in questo caso il valore recuperato sarà un multiplo di 2 (binario) e ogni valore corrisponderà a un pulsante specifico.
Risultato
Tutto quello che devi fare è premere il pulsante upload per trasferire il programma, quindi andare al menu strumenti quindi monitor seriale per osservare il risultato!
Possiamo ora osservare i dati estratti dal controller SNES in questa forma:
Premi i diversi pulsanti sul controller e il pad direzionale e dovresti vedere il feedback sullo schermo.