Pages: [1]   Go Down
Author Topic: Trovare tutorial per la seriale  (Read 637 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

--> http://arduinotutorial.altervista.org/serial/
--> http://www.ladyada.net/learn/arduino/lesson4.html
--> http://arduino.cc/en/Reference/Serial
« Last Edit: April 30, 2012, 08:49:14 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Si va su Google e si fa:
"arduino nunchuck"  smiley-wink
Logged


Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

F

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21243
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie, ma per leggere i valori dal nunchuck come si fa?
Si va su Google e si fa:
"arduino nunchuck"  smiley-wink
Che sintetico, che sei oggi  smiley-wink smiley-wink smiley-wink
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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è?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ? "-" : "[c]");

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie, ma per leggere i valori dal nunchuck come si fa?
Si va su Google e si fa:
"arduino nunchuck"  smiley-wink
Che sintetico, che sei oggi  smiley-wink smiley-wink smiley-wink
Ciao Uwe
Sono impegnato a "giocare" con un display a 7 segmenti e 4 cifre  smiley-razz

@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.  smiley-wink
Logged


Pages: [1]   Go Up
Jump to: