Hallo
Mein Verdacht scheint sich zu bestätigen. Ich habe nun die Daten des ersten Accelerometer untersucht. Das niederwertige Nipple (bit0 bis 3) funktioniert tadellos, zusammen mit den zwei LSB aus dem 6ten TWI-Datenbyte erhalte ich beim Schwenken je nach Richtung aufsteigende oder abfallende Werte von 0 bis 63.
Leider funktioniert es aber mit dem hochwertigen Nipple (bit4-7) überhaupt nicht. Die Werte sind in einer für mich nicht erkennbaren Reihenfolge. Hier ein Beispiel:
Code:
Highnipple (links) und Lownipple jeweils binär und dezimal
Schwenken von links nach rechts:
(Werte low Nipple aufsteigend)
00001010 10 00010100 20
00001010 10 00000000 0
00001010 10 00010101 21
00001001 9 00011110 30
00001001 9 00100001 33
00001001 9 00011110 30
00001010 10 00010010 18
00001001 9 00100101 37
00001001 9 00101111 47
00001011 11 00010101 21
00001011 11 00001111 15
00001010 10 00100101 37
00001010 10 00011101 29
00001000 8 00000010 2
00001000 8 00001101 13
00000111 7 00101001 41
00001001 9 00001011 11
00001001 9 00001111 15
00001000 8 00101010 42
00001000 8 00111011 59
00000101 5 00111101 61
00000110 6 00001101 13
00000101 5 00100001 33
00000101 5 00110000 48
00000110 6 00111101 61
00000111 7 00001100 12
00000110 6 00011110 30
00000110 6 00110010 50
00000011 3 00111100 60
00000100 4 00000101 5
00000100 4 00011011 27
00000011 3 00100011 35
00000011 3 00111001 57
00000011 3 00101110 46
00000011 3 00111001 57
00000100 4 00111110 62
00000101 5 00000101 5
00000101 5 00000100 4
00000101 5 00001011 11
00000101 5 00001000 8
00000101 5 00001011 11
00000100 4 00111111 63
00000101 5 00000010 2
00000011 3 00110101 53
Und ca. ab hier zurück von rechts nach links:
(Werte low Nipple abfallend)
00000100 4 00111100 60
00000011 3 00110100 52
00000011 3 00110100 52
00000101 5 00001011 11
00000101 5 00000111 7
00000101 5 00010000 16
00000101 5 00000111 7
00000101 5 00000000 0
00000101 5 00001010 10
00000101 5 00011010 26
00000101 5 00000101 5
00000101 5 00000000 0
00000101 5 00001101 13
00000101 5 00000011 3
00000100 4 00011001 25
00000110 6 00100001 33
00000101 5 00100100 36
00000110 6 00000001 1
00001000 8 00011111 31
00000111 7 00111001 57
00001000 8 00011001 25
00001000 8 00000110 6
00001010 10 00101101 45
00001010 10 00011111 31
00001011 11 00010011 19
00001011 11 00000110 6
00001001 9 00110101 53
00001001 9 00100101 37
00001001 9 00101011 43
00001001 9 00100001 33
00001001 9 00011100 28
00001010 10 00011001 25
00001001 9 00011100 28
00001010 10 00010100 20
00001010 10 00010101 21
00001010 10 00010101 21
00001010 10 00001110 14
00001010 10 00001010 10
00001010 10 00010010 18
00001001 9 00011111 31
00001001 9 00101000 40
00001010 10 00011000 24
Der Wert des Highnipples schwankt zwischen 10 (max links) und 3 (max rechts). Aber die Werte ändern sich nicht linear. Die Zuordnung der Werte zu den Winkeln ist immer gleich, aber eben nicht folgerichtig. Was nun? Kann das jemand in eine Formel fassen oder muss ich mit einer Umrechnungstabelle arbeiten?
Hier noch der Testcode:
Code:
Do
While Buttons.1 = 1 ' solange z-Knopf nicht gedrückt
Gosub Nunchuk_read
Waitms 100
Wend
While Buttons.1 = 0 ' solange z-Knopf gedrückt
Gosub Nunchuk_read ' Werte einlesen
Tmp = Acc_x / 16 ' linkes Nipple nach rechts schieben
Print Bin(tmp) ; " " ; Tmp ; " "; ' und binär und dezimal ausgeben
Tmp = Acc_x And 15 ' nur das rechte nipple
Tmp = Tmp * 4 ' um zwei Bits nach Links Schieben
If Buttons.2 = 1 Then Set Tmp.0 ' und die acc-LSB einlesen
If Buttons.3 = 1 Then Set Tmp.1
' binär und dezimal ausgeben
Print Bin(tmp) ; " " ; Tmp
Waitms 10
Wend
Loop
Gruß
mic
Lesezeichen