Hallo ich würde gerne ein Atmega8 mit einen Nunchuk verbinden und ihn dann mit Bascom Programmieren. Doch leider finde ich nur Beispiel die in C geschrieben wurden.
Kann mir da einer Helfen?
Hier die Beispiele in C
http://www.michael.lesauvage.name/cod4-nunchuk-leaner/
http://todbot.com/blog/2007/10/25/bo...unchuck-servo/
http://www.windmeadow.com/node/42
Hallo
Ein spannendes Thema. Der Nunchuk für 20€ scheint echt ein Schnäppchen zu sein. Er hat zwei Knöpfe, zwei analoge Sticks und drei Beschleunigungssensoren, kommuniziert mit I2C und kann mit 5V betrieben werden. Genial geeignet zum Anschluss an einen Microkontroller :)
Eine gute Basis für eigene Entwicklungen (neben den oben genannten netten Links) ist wohl diese Seite:
http://www.wiili.org/index.php/Wiimo...ollers/Nunchuk
Obwohl ich mit Bascom noch nicht viel gemacht habe, versuche ich mal den Nunchuk mit meinem RP6 in Bascom auszuwerten. Bin mal gespannt ob ich das hinbekomme, danke für die Anregung :)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Alles erklärt
Habe aber leider nicht so viel wissen um das umzuformen
aber für ein paar Hilfen wäre ich super dankbar
Hallo,
Das Ding geht per I2C,
dazu könnte man von hier die Init-Routine verwenden:
https://www.roboternetz.de/wissen/in...r#Hardware_TWI
So, schnell zusammengetippt wie ich das verstanden hätte (nur mit Debugausgaben der Werte), deshalb ungetestet, auch weil ich keine Wii-Teile habe:
schaut aber interessant aus das TeilCode:$regfile = "M8def.dat" ' the used chip $crystal = 16000000 ' frequency used $baud = 9600 $lib "i2c_twi.lbx" ' Für Hardware TWI Config Scl = Portc.5 ' Ports fuer IIC-Bus Config Sda = Portc.4 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 = &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 Do Gosub Nunchuck_init Buffer(1) = 0 I2creceive Nunchuck_read , Buffer(1) , 0 , 6 For B = 1 To 6 ' Hier soll noch etwas rumcodiert werden: Tmp = Buffer(b) Xor &H17 Tmp = Tmp + &H17 Print B ; ": " ; Hex(Tmp ) Buffer(b) = 0 ' löschen Next B Gosub Send_zero Print "------" Waitms 1000 Loop End Nunchuck_init: I2cstart I2cwbyte Nunchuck_write I2cwbyte &H40 ' sends memory address I2cwbyte &H00 ' sends sent a zero. I2cstop Return Send_zero: I2cstart I2cwbyte Nunchuck_write I2cwbyte &H00 ' sends one byte I2cstop Return
Edit:
EOR/XOR Bug entfernt !
I2C-Adresse richtig
Diesen Kopfsensor gibts übrigens auch fertig - weis den Namen nur gerade nicht
Aber mit dem Wii Kram kann man sehr viel machen - wie den Wiibrator aus der Bauhaus Hochschule/Universität für Sie und Ihn (kein Witz) oder die 3D Virtuellen Räume (auch hier im FOrum irgendwo)
Hi,
das hört sich sehr interessant an!
Damit könnte man schön eine simple aber effektive Fernsteuerung zum Testen von Robotern basteln!
Wenn jemand das erfolgreich zusammen gebastelt hat, wäre es toll, wenn es dazu einen Eintrag im Wiki gäbe...
Mit allen wichtigen Kommandos zusammengefasst, und ggf. ein paar Code-Schnippsel!
Praktisch wäre noch, wenn es eine passende Anschlussbuchse bei Reichelt oder so gäbe.. (weiß das jemand?)
P.S.: @BlackDevil: Du meinst die Seite hier oder: Johnny Chung Lee - Projects - Wii
Unter anderem den ja und den: http://www.shortnews.de/start.cfm?id=717965
Hallo
Nur um es gleich klarzumachen: Ich habe keine Ahnung von I2C/TWI, dies sind meine ersten Versuche.
Ich habe mir einen kleinen Adapter gebastelt:
Bild hier
Und das Programm von linux_80 (danke) an den RP6 angepasst:
Die Ausgabe dazu in meinem Terminal:Code:'$regfile = "M8def.dat" ' the used chip '$crystal = 16000000 ' frequency used '$baud = 9600 $regfile = "M32def.dat" ' RP6 mit Mega32 $crystal = 8000000 ' 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 Dim Buffer(6) As Byte Dim B As Byte Dim Tmp As Byte ' Startausgabe Print Print "I2C-TWI Demo mit Wii Nunchuck" Print Do Gosub Nunchuck_init Buffer(1) = 0 I2creceive Nunchuck_read , Buffer(1) , 0 , 6 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 "------" Waitms 1000 Loop End Nunchuck_init: I2cstart I2cwbyte Nunchuck_write I2cwbyte &H40 ' sends memory address I2cwbyte &H00 ' sends sent a zero. I2cstop Return Send_zero: I2cstart I2cwbyte Nunchuck_write I2cwbyte &H00 ' sends one byte I2cstop Return
Egal ob der Nunchuk eingesteckt ist oder nicht, die Werte sind immer gleichI2C-TWI Demo mit Wii Nunchuck
1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------
1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------
1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------
[RP6BOOT]
[READY]
Vielleicht könnten die TWI-Profis mal drüberschaun. Ich versuche es nun erstmal in C mit der TWI-Libray des RP6...
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Also mit Bascom kenne ich mich leider nicht aus, aber gibts da nicht auch sowas wie I2CInit ?
Lesezeichen