Perdonami, ma che sono queste prove "alla cieca"? O cerchi di capire cosa fanno certe istruzioni e funzioni, oppure non puoi pensare di far andare un motore mettendo il carburatore al posto della batteria...
Leggi bene il mio post #43, poi per le modifiche che ti consigliavo erano queste, che devi provare:
...
// Lettura corrente del magnetometro
// (spostata qui come variabile globale intera)
int headingDegrees;
void setup() {
Wire.begin();
...
void loop() {
MostraOra();
//char outBussola[8];
bussola(); // richiama la routine che legge i gradi
...
sprintf(outBuf, "%d;%d", headingDegrees, val); // concatena i due valori separati da puntovirgola
Serial.println(outBuf); // invii alla seriale
...
delay(300); // aggiustare valore per migliori prestazioni tra 50 e 500
}
void bussola() { //evento bussola per indicare i gradi del magnetometro,
sensors_event_t event;
mag.getEvent(&event);
float heading = atan2(event.magnetic.y, event.magnetic.x);
float declinationAngle = 0.06;
heading += declinationAngle;
if (heading < 0) {
heading += 2 * PI;
}
if (heading > 2 * PI) {
heading -= 2 * PI;
}
headingDegrees = heading * 180 / M_PI;
}
...