Arduino – Controller – Wii Nunchuk uitlezen
Hardware
Wii Nunchuk controller:
WiiChuck-Nunchuck adapter
Het is mogelijk om de Wii Nunchuk aan te sluiten via een microcontroller om de ze vervolgens uit te lezen. De Nunchuk maakt gebruik van een simpel I2C protocol en is doormiddel van een bibliotheek eenvoudig uit te lezen!
Wat heb je nodig?
Aansluiten op de Arduino
De pinout is hier te vinden en het aansluiten van de controller plug op de arduino is als volgt:
Er is daarvoor een handige adapter gemaakt welke je op de analoge poorten van de arduino plaatst:
Script van Todbot bibliotheek
Leest X en Y as uit en de Z + C knop.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
/* * WiiChuckDemo -- * * 2008 Tod E. Kurt, http://thingm.com/ * */ #include <Wire.h> #include "nunchuck_funcs.h" int loop_cnt=0; byte accx,accy,zbut,cbut; int ledPin = 13; void setup(){ Serial.begin(115200); nunchuck_setpowerpins(); nunchuck_init(); // send the initilization handshake Serial.print("WiiChuckDemo ready\n"); } void loop() { if( loop_cnt > 50 ) { // every 100 msecs get new data loop_cnt = 0; nunchuck_get_data(); accx = nunchuck_accelx(); // ranges from approx 70 - 182 accy = nunchuck_accely(); // ranges from approx 65 - 173 zbut = nunchuck_zbutton(); cbut = nunchuck_cbutton(); Serial.print("accx: "); Serial.print((byte)accx,DEC); Serial.print("\taccy: "); Serial.print((byte)accy,DEC); Serial.print("\tzbut: "); Serial.print((byte)zbut,DEC); Serial.print("\tcbut: "); Serial.println((byte)cbut,DEC); } loop_cnt++; delay(1); } |
Output:
1 2 3 4 5 6 7 8 9 10 11 |
accx: 127 accy: 117 zbut: 0 cbut: 0 accx: 129 accy: 115 zbut: 0 cbut: 0 accx: 127 accy: 118 zbut: 1 cbut: 1 accx: 128 accy: 104 zbut: 0 cbut: 0 accx: 131 accy: 106 zbut: 0 cbut: 0 accx: 128 accy: 105 zbut: 1 cbut: 1 accx: 130 accy: 105 zbut: 1 cbut: 1 accx: 130 accy: 103 zbut: 0 cbut: 0 accx: 182 accy: 115 zbut: 0 cbut: 0 accx: 176 accy: 112 zbut: 0 cbut: 0 accx: 164 accy: 94 zbut: 0 cbut: 0 |
Script van Robert Eisele bibliotheek
Ik krijg het helaas niet werkend.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <Wire.h> #include "Nunchuk.h" void setup() { Serial.begin(115200); Wire.begin(); nunchuk_init_power(); // A3 and A4 is power supply nunchuk_init(); } void loop() { if (nunchuk_read()) { // Work with nunchuk_data nunchuk_print(); } delay(10); } |
Output:
?
Bronnen:
todbot.com
xarg.org