Archiv verlassen und diese Seite im Standarddesign anzeigen : Nunchuck auslesen
Hallo,
wir versuchen grade einen Nunchuck der Wii an einem ATmega32 auszulesen.
Leider bekommen wir immer nur 16 bei allen Bytes zurück.
Wir haben folgenden Code verwendet um es zu testen:
'$regfile = "M8def.dat" ' the used chip
'$crystal = 16000000 ' frequency used
'$baud = 9600
$regfile = "M32def.dat" ' RP6 mit Mega32
$crystal = 16000000 ' taktet mit 8MHz
$baud = 38400 ' Loader-Baud
$lib "i2c_twi.lbx" ' Für Hardware TWI
'Config Scl = Portc.5 ' Ports fuer IIC-Bus
'Config Sda = Portc.4
Config Scl = Portc.0 ' Ports fuer IIC-Bus
Config Sda = Portc.1
Config Twi = 400000 ' Init TWBR und TWSR
' TWI gleich einschalten, das macht Bascom ansonsten erst beim I2CStart !
Twcr = &B00000100 ' nur TWEN setzen
'Const Nunchuck_write = &H52 ' Slaveadresse
'Const Nunchuck_read = &H53
Const Nunchuck_write = &HA4 ' Slaveadresse
Const Nunchuck_read = &HA5
Dim Buffer(6) As Byte
Dim B As Byte
Dim Tmp As Byte
' Startausgabe
Print
Print "I2C-TWI Demo mit Wii Nunchuck"
Print
Gosub Nunchuck_init
Gosub Send_zero
Do
Buffer(1) = 0
I2creceive Nunchuck_read , Buffer(1) , 0 , 6
'Print Err
For B = 1 To 6
' Hier soll noch etwas rumcodiert werden:
Tmp = Buffer(b) Eor &H17
Tmp = Tmp + &H17
Print B ; ": " ; Hex(tmp ) ; " ";
Buffer(b) = 0 ' löschen
Next B
Gosub Send_zero
'Print "------"
Print
Waitms 500
Loop
End
Nunchuck_init:
I2cstart
I2cwbyte Nunchuck_write
'Print "Fehler beim Init: " ; Err
I2cwbyte &H40 ' sends memory address
I2cwbyte &H00 ' sends sent a zero.
I2cstop
Return
Send_zero:
I2cstart
I2cwbyte Nunchuck_write
'Print "Fehler beim null senden: " ; Err
I2cwbyte &H00 ' sends one byte
I2cstop
Return
Wofür brauchst du denn das Nunchuk?
Also wenn du nur den Joystick brauchst ist hier ein Link:
http://www.conrad.de/ce/de/FastSearch.html?search=joistick&x=0&y=0&=Schnellsuche&initial=true
Vieleicht kannst du damit ja etwas anfangen.
Geh mal mit der TWI-Frequenz von 400 runter auf 100kHz.
Die 400 haben bei mir auch nicht funktioniert, mit 100 läufts perfekt.
Geh mal mit der TWI-Frequenz von 400 runter auf 100kHz.
Die 400 haben bei mir auch nicht funktioniert, mit 100 läufts perfekt.
Hmm ne das hat es leider nicht gebracht. Wenn ich mal diese Fehlerausgabe aktiviere dann kommt: "Fehler bei Init: 0" "Fehler beim null senden: 1" .
Die 1 lässt mich aufhorchen aber woran es da dann genau liegen soll kann ich mir nicht erklären aufgrund von mangelender TWI erfahrung
Clock und Data waren vertauscht aber wir empfangen weiterhin nur 16 und das bei allen 6 Bytes. Fehler bei Init und beim Null senden angebelich "0"
Könnte es sein, dass die Kabelfarben nicht stimmen aber wenn ja müsste durch ein einfaches vertauschen doch die Sach erledigt sein oder nicht?
Wir haben schon viel versucht aber wissen grade nicht wirklich weiter.
Könnte es sein, dass die Kabelfarben nicht stimmen aber wenn ja müsste durch ein einfaches vertauschen doch die Sach erledigt sein oder nicht?
Wir haben schon viel versucht aber wissen grade nicht wirklich weiter.
radbruch
30.04.2010, 17:57
Hallo
Hier das Pinout meiner Nunchuck-Versuche:
rot - VDD (RP6 Pin1, XBUS 3/5)
weis - GND (RP6 Pin2, XBUS 1/2/14)
grün - SDA (RP6 Pin3, XBUS 12)
gelb - SCL (RP6 Pin4, XBUS 10)
(Angaben natürlich ohne Gewähr)
(Aus: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=464955#464955)
Aber das hast du vermutlich auch schon gefunden.
Gruß
mic
Hallo
Hier das Pinout meiner Nunchuck-Versuche:
rot - VDD (RP6 Pin1, XBUS 3/5)
weis - GND (RP6 Pin2, XBUS 1/2/14)
grün - SDA (RP6 Pin3, XBUS 12)
gelb - SCL (RP6 Pin4, XBUS 10)
(Angaben natürlich ohne Gewähr)
(Aus: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=464955#464955)
Aber das hast du vermutlich auch schon gefunden.
Gruß
mic
Jap, in der Tat habe ich den Nunchuck so beschaltet. Hmm so langsam mach ich mir über die Funktionsfähigkeit meines Gerätes gedanken. Leider habe ich auch momentan keinen zweiten da und den an einer Wii anschließen ist auch erschwert worden :( Hab halt gedacht knipse mal das Kabel ab. Denn wenn ihr alle sagt, dass es soweit richtig sein muss und laufen muss dann kommt ein Defekt schon in Frage denke ich.
Jap, in der Tat habe ich den Nunchuck so beschaltet. Hmm so langsam mach ich mir über die Funktionsfähigkeit meines Gerätes gedanken. Leider habe ich auch momentan keinen zweiten da und den an einer Wii anschließen ist auch erschwert worden :( Hab halt gedacht knipse mal das Kabel ab. Denn wenn ihr alle sagt, dass es soweit richtig sein muss und laufen muss dann kommt ein Defekt schon in Frage denke ich.
Hallo,
ich stehe vor dem gleichen Problem. Hast du mitlerweile eine Lösung?
MfG Tom
oderlachs
24.02.2012, 20:29
Von vorn auf den stecker gesehen ist links oben CLK rechts oben GND, links unten VCC und rechts GND (Arduino Buch O'REILLYS Verlag) Muss mal schauen habe noch irgendwo eine genauere Beschreibung...HIER (http://www.windmeadow.com/node/42)
halfdone
24.02.2012, 21:23
Die Anschlüsse vom Nunchuk sind sehr empfindlich. Vor allem bei nicht geübter Hand drückt man die Anschlüsse sehr schnell ein. Wenn das schon der Fall ist, hilft oft noch mal neu einzustecken.
Wer oft damit rumexperemtiert, dem kann ich empfehlen sich so ein Breakout für den Nunchuk zu holen. z.B. http://www.watterott.com/de/Leiterplatten/WiiChuck-Adapter
Ansonsten ist die Seite von oderlachs schon gut beschrieben.
Ich hab letztens den Nunchuk per Arduino angesteuert, wer da Interesse hat kann sich ja mal den Source vom dpunkt Verlag runterladen:
http://dpunkt.de/leseproben/3692/code_(Vers_1_0).zip
Dort unter MotionSensor/ befindet sich im Ordner NunChuckDemo/ ein Funktionstest, den man dann übers Terminal ansteuern kann.
Ein etwas spektakuläreren Test gibt es dann im Ordner Cube. Ist ein 3D Würfel der in Processing programmiert wurde.
Lg
Danke für eure Antworten, bei mir liefert der Nunchuk auch ständig den Wert 16 zurück, so wie vom Threadstarter. Programmiere in Bascom. Hat jemand diesbezüglich noch eine Idee?
MfG Tom
RoboTido
28.02.2012, 10:45
Für die Kontaktierung des Nunchuk hat sich auch dieser Adapter bewährt: http://qc-copter.de/shop/index.php?a=15 (Siehe Anhang)
Damit wird der Nunchuk mechanisch verriegelt, man hat einen bidirektionalen I2C-Pegelwandler und einen 3,3V Spannungsregler. Einige Leute schließen den Nunchuk ja leider fälschlicherweise an 5V an und wundern sich über die begrenzte Lebensdauer.... ;-)
Wegen der Programmierung:
- Ich würde den Nunchuk erst einmal mit nur 100kHz betreiben, statt mit 400kHz
- Dann würde ich nach dem Initialisieren des I2C ein wenig (10ms) warten und an Adresse 0x52 die Daten 0x40 und 0x00 senden, um den Nunchuk zu initialisieren.
- Danach wieder 10ms warten
- Dann von Adresse 0x52 sechs Datenbytes lesen. Darin stecken dann sämtliche Infos, die der Nunchuk liefern kann.
- Sollte der Nunchuk nur 0xFFs ausspucken, ist das als Fehler zu werten und der Nunchuk muss neu initialisiert werden!
Gruß
Tido
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.