Grazie della ramanzina, non avrei saputo farne a meno.
Il Datasheet non l'avevo letto.
Ho sbagliato a fidarmi, ma ricordo di averlo letto su un sito affidabile (non ricordo purtroppo dove..)
cmq l'accelerometro non è andato. leggendo i valori raw, l'asse x mi restituisce valori da -167 a +217 circa.. e con lo zero al centro.
cmq il risultato da 'funzionante' era questo:
e qui il mio codice:
#include <math.h>
#include <Wire.h>
#include <WiiChuck.h>
#define MAXANGLE 90
#define MINANGLE -90
int St_Led = 8;
int AR = 0;
int AP = 0;
int JX = 0;
int JY = 0;
int BZ = 0;
int BC = 0;
int BCZ = 0;
WiiChuck chuck = WiiChuck();
int angleStart, currentAngle;
int tillerStart = 0;
double angle;
void setup() {
//nunchuck_init();
//Serial.begin(9600); // debug Terminal Baud-Rate
Serial.begin(31250); // show MIDI Baud-Rate
lampeggia();
lampeggia();
chuck.begin();
chuck.update();
//chuck.calibrateJoy();
pinMode(St_Led,OUTPUT);
digitalWrite(St_Led, LOW);
delay(300);
lampeggia();
lampeggia();
lampeggia();
lampeggia();
lampeggia();
}
void loop() {
delay(20);
chuck.update();
AR = map(chuck.readRoll(),-80,80,0,127);
if (AR < 0) {
AR = 0;
}
if (AR > 127) {
AR = 127;
}
AP = map(chuck.readPitch(),0,140,0,127);
if (AP < 0) {
AP = 0;
}
if (AP > 127) {
AP = 127;
}
JX = map(chuck.readJoyX(),-120,120,0,127);
if (JX < 0) {
JX = 0;
}
if (JX > 127) {
JX = 127;
}
JY = map(chuck.readJoyY(),-117,118,0,127);
if (JY < 0) {
JY = 0;
}
if (JY > 127) {
JY = 127;
}
if ((chuck.zPressed()) && !(chuck.cPressed())) {
BZ = 127;
}
else {
BZ = 0;
}
if ((chuck.cPressed()) && !(chuck.zPressed())) {
BC = 127;
}
else {
BC = 0;
}
if (chuck.zPressed() && chuck.cPressed()) {
BCZ = 127;
digitalWrite(St_Led,HIGH);
}
else {
BCZ = 0;
digitalWrite(St_Led,LOW);
}
MIDI_TX(176,16,AR);
MIDI_TX(176,17,AP);
MIDI_TX(176,18,JX);
MIDI_TX(176,19,JY);
MIDI_TX(176,20,BC);
MIDI_TX(176,21,BZ);
MIDI_TX(176,22,BCZ);
/*
Serial.print("AR: ");
Serial.print(AR);
Serial.print(" AP: ");
Serial.print(AP);
Serial.print(" JX: ");
Serial.print(JX);
Serial.print(" JY: ");
Serial.print(JY);
Serial.print(" BZ: ");
Serial.print(BZ);
Serial.print(" BC: ");
Serial.print(BC);
Serial.print(" BCZ: ");
Serial.println(BCZ);
*/
}
void MIDI_TX(unsigned char MESSAGE, unsigned char CONTROL, unsigned char VALUE)
{
Serial.print(MESSAGE);
Serial.print(CONTROL);
Serial.print(VALUE);
}
void lampeggia() {
digitalWrite(St_Led, HIGH);
delay(100);
digitalWrite(St_Led, LOW);
delay(100);
}
Grazie.