Danke schonmal für die schnelle Antwort!
Hmm, ja das I2Cinit ist mir wohl unter den Tisch gefallen, aber wenn mich jetzt nicht alles Täuscht (was durchaus sein kann, ich hab heut nacht nur noch Bascom code vor augen gehabt), dann fehlt das in deinem Code den du damals gepostet hast, aber auch.
Ich habe jetzt aber wo anders einen funktionierenden Code gefunden, der bei mir auf Anhieb funktionierte. Ich hab das I2cinit in deinem mal schnell eingefügt, aber da hats auch nicht funktioniert, ich versteh das grad einfach nicht.
Aber hier mal der Code der funktioniert, ich werde jetzt nur die auswertung ändern, da ich eigentlich einen Classic Controller verwenden möchte
Code:$regfile = "m168def.dat" $crystal = 20000000 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 $lib "i2c_twi.lbx" Config Scl = Portc.5 Config Sda = Portc.4 Config Twi = 100000 I2cinit Const Nunchuck_write = &HA4 Const Nunchuck_read = &HA5 Dim Buffer(16) As Byte Dim Joy_x As Byte Dim Joy_y As Byte Dim Accel_x As Integer Dim Accel_y As Integer Dim Accel_z As Integer Dim Buttons As Byte Dim But_c As Byte Dim But_z As Byte Waitms 250 Print "Nunchack Init" I2cstart I2cwbyte Nunchuck_write I2cwbyte &H40 If Err <> 0 Then Print "Error data sending" End If I2cwbyte &H00 If Err <> 0 Then Print "Error data sending" End If I2cstop If Err <> 0 Then Print "Error IC2 Stop" End If Waitms 250 Print "Nunchack Init finished" Waitms 250 Print "Nunchuck active" Do Gosub Nunchuk_read Print Accel_x ; "," ; Accel_y , ; "," ; Accel_z ; "," ; Joy_x ; "," ; Joy_y ; "," ; Buttons.0 ; "," ; Buttons.1 Waitms 500 Loop End Nunchuk_read: Dim I As Byte Dim Tmp As Byte I2cstart I2cwbyte Nunchuck_write I2cwbyte &H00 If Err <> 0 Then Print "Error data sending" End If I2cstop Waitms 5 Buffer(1) = 0 I2creceive Nunchuck_read , Buffer(1) , 0 , 6 If Err <> 0 Then Print "Error data receving" End If For I = 1 To 6 Tmp = Buffer(i) Xor &H17 Tmp = Tmp + &H17 Buffer(i) = Tmp Next I Joy_x = Buffer(1) Joy_y = Buffer(2) Accel_x = Buffer(3) * 4 Accel_y = Buffer(4) * 4 Accel_z = Buffer(5) * 4 Buttons = Buffer(6) If Buttons.2 = 1 Then Accel_x = Accel_x + 1 If Buttons.3 = 1 Then Accel_x = Accel_x + 2 If Buttons.4 = 1 Then Accel_y = Accel_y + 1 If Buttons.5 = 1 Then Accel_y = Accel_y + 2 If Buttons.6 = 1 Then Accel_z = Accel_z + 1 If Buttons.7 = 1 Then Accel_z = Accel_z + 2 Return







Zitieren

Lesezeichen