Definizioni

// these may need to be adjusted for each nunchuck for calibration
#define ZEROX 510
#define ZEROY 490
#define ZEROZ 460
#define RADIUS 210  // probably pretty universal

#define DEFAULT_ZERO_JOY_X 124
#define DEFAULT_ZERO_JOY_Y 132

Come dice il commento in inglese questi sono i valori di zero dell’accelerometro, e andrebbero regolati per ogni nunchuck, mentre i due valori di zero per il joystick possono essere impostati con una funzione disponibile nella libreria la calibrateJoy().

Proseguiamo con le funzioni.

begin()

Serve ad inizializzare il nunchuk e a resettare le varie variabili interne. Va chiamata una sola volta all’inizio di ogni sketch, quindi nel void setup().

update()

Ha il compito di richiedere i dati al nunchuck, salvare il valore precedente delle variabili prima di aggiornarle al valore corrente, e nell’ultima parte di decodificare l’ultimo byte di informazioni come spiegato quando abbiamo parlato del protocollo.

calibratejoy()

Come accennato precedentemente ha il compito di “salvare” l’attuale valore del joystick come codizione di zero.

Adesso non restano che le funzioni di lettura dei valori.

Per gli accelerometri abbiamo a disposizione 3 funzioni readAccelX() readAccelY() readAccelZ() che ci ritornano il valore dell’accelerometro relativo all’asse sottratto il valore di zero indicato nei #define.
Relativamente agli accelerometri abbiamo anche a disposizione due funzioni che ci danno la posizione del nunchuck calcolata in base al valore dei 3 assi. Le due funzioni sono readRoll() readPitch() che ci danno rispettivamente il rollio ed il beccheggio del nunchuck. Questi valori sono ottenuti combinando i dati di X e Z per il rollio e di Y e Z per il beccheggio.

Rollio Beccheggio
rollio  beccheggio

Per il joystick abbiamo a disposizione 4 funzioni.

readJoyX() e readJoyY() che ci ritornano il valore analogico della posizione del joystick a meno del valore di zero;

rightJoy()  e leftjoy() che ci danno un’indicazione “digitale” dal joystick.

Queste sono sono le funzioni che la libreria ci mette a disposizione.

Nel file zip scaricato è presente anche un’esempio. Vediamo insieme per capire come usare queste funzioni in un nostro sketch.