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
Lesezeichen