Trovare tutorial per la seriale

Ciao, sono nuovo qui e quindi colgo l’opportunità di presentarmi… Ciao a tutti
Premetto che ho gia provato a cercare nel forum e su San Google.
A me non piace la programmazione a copia e incolla, e vorrei iniziare a usare il nunchuck della Wii con arduino attraverso la seriale.
Io di seriale non so niente e quindi cercavo una guida che spieghi tutte le varie funzioni e come gestire le varie cose…
Sapete dove trovarla?

--> http://arduinotutorial.altervista.org/serial/ --> http://www.ladyada.net/learn/arduino/lesson4.html --> http://arduino.cc/en/Reference/Serial

Grazie, ma per leggere i valori dal nunchuck come si fa?

Elgardo94: Grazie, ma per leggere i valori dal nunchuck come si fa?

Si va su Google e si fa: "arduino nunchuck" ;)

il nunchuck non usa la seriale ma l’i2c. Si tratta sempre di un bus seriale a 2 fili, ma il concetto è diverso.

Quindi dovresti leggere anche il reference della libreria Wire: http://arduino.cc/it/Reference/Wire

leo72:

Elgardo94:
Grazie, ma per leggere i valori dal nunchuck come si fa?

Si va su Google e si fa:
“arduino nunchuck” :wink:

Che sintetico, che sei oggi :wink: :wink: :wink:
Ciao Uwe

Ok sto iniziando a capire... Ho provata a usare un file sorgente che ho trovato su internet, ma mi rileva sempre gli stessi dati da arduino, sapete perchè?

Ragazzi ho risolto, in pertica quando scrivi Wire.write(0b00); te lo da come abiguo, e io lo avevo modificato.
Invece bisogna fare prima int a=0;
Wire.write(a);
E il gioco è fatto
questo codice funziona con arduino rev3 e IDE 1.0

//
// nunchuck.pde
//

#include <Wire.h>

uint8_t buf[6]; // buffer for the six-bytes packet coming from Nunchuck
int cnt=0; // count of bytes in the buffer
int readcnt=0; // number of times we read a packet from Nunchuck
int ledPin=13; // which pin will host the blinking LED

uint8_t nunchuk_decode(uint8_t x) // decode nunchuck data
{
return (x^0x17)+0x17; // not that an hard encryption…
}

void nunchuck_ack() // acknowledge a Nunchuck packet
{
int a=0;
Wire.beginTransmission(0x52); // send a zero to device 0x52
Wire.write(a);
Wire.endTransmission();
}

void setup() // initialization
{
int n,a=0;
digitalWrite(ledPin, HIGH); // turn on LED

for(n=0; n<6; n++) buf[n]=0; // fill buffer with zero values

Serial.begin(115200); // console init

Wire.begin(); // TWI init

Wire.beginTransmission(0x52); // nunchuck init
Wire.write(0x40);
Wire.write(a);
Wire.endTransmission();

digitalWrite(ledPin, LOW); // turn off LED

Serial.print("!-- start\n");
}

void loop() // main loop
{
Wire.requestFrom(0x52, 6); // request data from nunchuck
while(Wire.available()) // read data and light the LED
{
buf[cnt++] = nunchuk_decode(Wire.read());
digitalWrite(ledPin, HIGH);
}

if(cnt>=6) // an entire Nunchuck packet was read?
{
printdata(); // yes, print it
cnt=0; // clear buffer counter
nunchuck_ack(); // acknowledge received packet
digitalWrite(ledPin, LOW); // turn off the LED
delay(800); // wait 800msec before next loop
}
}

void printdata() // print out the values
{
int n; // note: the 123,131,524,597… depend on my Nunchuck calibration

Serial.print(++readcnt, DEC);

Serial.print("\t"); // joystick x/y values
Serial.print((int)buf[0]-123);
Serial.print("\t");
Serial.print((int)buf[1]-131);

n=(buf[2]<<2)+((buf[5]>>2)&3)-524; // accel X
Serial.print("\t");
Serial.print(n);

n=(buf[3]<<2)+((buf[5]>>4)&3)-597; // accel Y
Serial.print("\t");
Serial.print(n);

n=(buf[4]<<2)+((buf[5]>>6)&3)-668; // accel Z
Serial.print("\t");
Serial.print(n);

Serial.print(buf[5]&1 ? "\t- " : "\t[z] ");
Serial.print(buf[5]&2 ? “-” : "

");

  Serial.print ("\r\n");
}

uwefed:

leo72:

Elgardo94: Grazie, ma per leggere i valori dal nunchuck come si fa?

Si va su Google e si fa: "arduino nunchuck" ;)

Che sintetico, che sei oggi ;) ;) ;) Ciao Uwe

Sono impegnato a "giocare" con un display a 7 segmenti e 4 cifre :P

@Elgardo94: ti consiglierei di cambiare il titolo alla discussione con uno più consono, se vuoi continuare ad affrontare il problema della comunicazione col Nunchuk via I2C almeno questo thread potrà essere più facilmente trovato in futuro da altri utenti che potrebbero avere lo stesso tuo problema. ;)