Hallo Zusammen,
nach langer Zeit melde ich mich an dieser Stelle mal wieder (wie das halt so ist man geht nur zum Arzt wenn man ein Problem hat ).
Ich habe mir ein MinIMU-9 v2 zugelegt. Und wie es kommen musste nach Wochen programmieren, testen, ausprobieren weiß ich nicht mehr weiter.
Auf dem MinIMU-9 v2 sind: ein L3GD20 (3-Achsen Gyroskop) und ein LSM303DLHC (3 Achsen Lagesensor + 3 Achsen "Kompass").
L3GD20 - kein großes Problem hierfür gibt es eine Bibliothek
LSM303 - Tagelanges googeln Adafruit hat dazu eine Arduino Bibliothek die jemand "inoffiziell" "offiziell" in Python portiert hat.
Und hier beginnen die Probleme.
Ich will bei meinen Programmen so wenig mit andren Entwicklern in die Kiste hüpfen wie möglich :s (Mein Programm soll so eigenständig und unabhängig von anderer Läute Arbeit sein wie möglich)
Das Adafruit Programm scheint einwandfrei zu laufen also habe ich an Hand dessen versucht meinen eigenen Fehler zu finden.
Ich sollte an dieser Stelle erwähnen das alles funktioniert bis auf die Kleinigkeit das ich vom Lagesensor keine Lagedaten bekomme.
den Adafruit Code gibt es hier: https://bitbucket.org/shigeru_kawagu…303_for_rpi.git
Mein Programm poste ich später hinterher - bin komplett auf Linux umgestiegen und muss jetzt erst mal schauen das ich das Programm vom PI wieder auf meinen anderen Rechner geladen bekomme.
Wenn jemand eine Idee dazu hat bitte melden.
Edit 15.3.14
Hier mein Code:
#
import smbus
import time
import math
#reserved for imports
i = 0
bus = smbus.SMBus (1)
device_a = 0x19
device_m = 0x1E
ctrl_reg1_a = 0x20 #rw 010 0000
ctrl_reg2_a = 0x21 #rw 010 0001
ctrl_reg3_a = 0x22 #rw 010 0010
ctrl_reg4_a = 0x23 #rw 010 0011
ctrl_reg5_a = 0x24 #rw 010 0100
ctrl_reg6_a = 0x25 #rw 010 0101
reference_a = 0x26 #rw 010 0110
status_reg_a = 0x27 #r 010 0111
out_x_l_a = 0x28 #r 010 1000
out_x_h_a = 0x29 #r 010 1001
out_y_l_a = 0x2A #r 010 1010
out_y_h_a = 0x2B #r 010 1011
out_z_l_a = 0x2C #r 010 1100
out_z_h_a = 0x2D #r 010 1101
fifo_ctrl_reg_a = 0x2E #rw 010 1110
fifo_source_reg_a = 0x2F #r 010 1111
int1_cfg_a = 0x30 #rw 011 0000
int1_src_a = 0x31 #r 011 0001
int1_ths_a = 0x32 #rw 011 0010
int1_duration_a = 0x33 #rw 011 0011
int2_cfg_a = 0x34 #rw 011 0100
int2_src_a = 0x35 #r 011 0101
int2_ths_a = 0x36 #rw 011 0110
int2_duration_a = 0x37 #rw 011 0111
click_cfg_a = 0x38 #rw 011 1000
click_src_a = 0x39 #rw 011 1001
click_ths_a = 0x3A #rw 011 1010
time_limit_a = 0x3B #rw 011 1011
time_latency_a = 0x3C #rw 011 1100
time_window_a = 0x3D #rw 011 1101
# # # # # # #
cra_reg_m = 0x00 #rw 00000000
crb_reg_m = 0x01 #rw 00000001
mr_reg_m = 0x02 #rw 00000010
out_x_h_m = 0x03 #r 00000011
out_x_l_m = 0x04 #r 00000100
out_z_h_m = 0x05 #r 00000101
out_z_l_m = 0x06 #r 00000110
out_y_h_m = 0x07 #r 00000111
out_y_l_m = 0x08 #r 00001000
sr_reg_m = 0x09 #r 00001001
ira_reg_m = 0x0A #r 00001010
irb_reg_m = 0x0B #r 00001011
irc_reg_m = 0x0C #r 00001100
temp_out_h_m = 0x31 #r 00000000
temp_out_l_m = 0x32 #r 00000000
print ("setting config")
bus.write_byte_data (device_a,ctrl_reg1_a,01010111)
time.sleep (0.01)
bus.write_byte_data (device_a,ctrl_reg4_a,00000000)
time.sleep (0.01)
bus.write_byte_data (device_m,cra_reg_m,10010100)
time.sleep (0.01)
bus.write_byte_data (device_m,crb_reg_m,01100000)
time.sleep (0.01)
bus.write_byte_data (device_m,mr_reg_m,00000000)
time.sleep (0.01)
print ("done")
val_ctrl_reg1_a = bus.read_byte_data (device_a,ctrl_reg1_a)
val_ctrl_reg2_a = bus.read_byte_data (device_a,ctrl_reg2_a)
val_ctrl_reg3_a = bus.read_byte_data (device_a,ctrl_reg3_a)
val_ctrl_reg4_a = bus.read_byte_data (device_a,ctrl_reg4_a)
val_ctrl_reg5_a = bus.read_byte_data (device_a,ctrl_reg5_a)
val_ctrl_reg6_a = bus.read_byte_data (device_a,ctrl_reg6_a)
val_reference_a = bus.read_byte_data (device_a,reference_a)
val_status_reg_a = bus.read_byte_data (device_a,status_reg_a)
val_out_x_l_a = bus.read_byte_data (device_a,out_x_l_a)
val_out_x_h_a = bus.read_byte_data (device_a,out_x_h_a)
val_out_y_l_a = bus.read_byte_data (device_a,out_y_l_a)
val_out_y_h_a = bus.read_byte_data (device_a,out_y_h_a)
val_out_z_l_a = bus.read_byte_data (device_a,out_z_l_a)
val_out_z_h_a = bus.read_byte_data (device_a,out_z_h_a)
val_fifo_ctrl_reg_a = bus.read_byte_data (device_a,fifo_ctrl_reg_a)
val_fifo_source_reg_a = bus.read_byte_data (device_a,fifo_source_reg_a)
val_int1_cfg_a = bus.read_byte_data (device_a,int1_cfg_a)
val_int1_src_a = bus.read_byte_data (device_a,int1_src_a)
val_int1_ths_a = bus.read_byte_data (device_a,int1_ths_a)
val_int1_duration_a = bus.read_byte_data (device_a,int1_duration_a)
val_int2_cfg_a = bus.read_byte_data (device_a,int2_cfg_a)
val_int2_src_a = bus.read_byte_data (device_a,int2_src_a)
val_int2_ths_a = bus.read_byte_data (device_a,int2_ths_a)
val_int2_duration_a = bus.read_byte_data (device_a,int2_duration_a)
val_click_cfg_a = bus.read_byte_data (device_a,click_cfg_a)
val_click_src_a = bus.read_byte_data (device_a,click_src_a)
val_click_ths_a = bus.read_byte_data (device_a,click_ths_a)
val_time_limit_a = bus.read_byte_data (device_a,time_limit_a)
val_time_latency_a = bus.read_byte_data (device_a,time_latency_a)
val_time_window_a = bus.read_byte_data (device_a,time_window_a)
# # # # # # #
val_cra_reg_m = bus.read_byte_data (device_m,cra_reg_m)
val_crb_reg_m = bus.read_byte_data (device_m,crb_reg_m)
val_mr_reg_m = bus.read_byte_data (device_m,mr_reg_m)
val_out_x_h_m = bus.read_byte_data (device_m,out_x_h_m)
val_out_x_l_m = bus.read_byte_data (device_m,out_x_l_m)
val_out_z_h_m = bus.read_byte_data (device_m,out_z_h_m)
val_out_z_l_m = bus.read_byte_data (device_m,out_z_l_m)
val_out_y_h_m = bus.read_byte_data (device_m,out_y_h_m)
val_out_y_l_m = bus.read_byte_data (device_m,out_y_l_m)
val_sr_reg_m = bus.read_byte_data (device_m,sr_reg_m)
val_ira_reg_m = bus.read_byte_data (device_m,ira_reg_m)
val_irb_reg_m = bus.read_byte_data (device_m,irb_reg_m)
val_irc_reg_m = bus.read_byte_data (device_m,irc_reg_m)
val_temp_out_h_m = bus.read_byte_data (device_m,temp_out_h_m)
val_temp_out_l_m = bus.read_byte_data (device_m,temp_out_l_m)
print (val_ctrl_reg1_a)
print (val_ctrl_reg2_a)
print (val_ctrl_reg3_a)
print (val_ctrl_reg4_a)
print (val_ctrl_reg5_a)
print (val_ctrl_reg6_a)
print (val_reference_a)
print (val_status_reg_a)
print (val_out_x_l_a)
print (val_out_x_h_a)
print (val_out_y_l_a)
print (val_out_y_h_a)
print (val_out_z_l_a)
print (val_out_z_h_a)
print (val_fifo_ctrl_reg_a)
print (val_fifo_source_reg_a)
print (val_int1_cfg_a)
print (val_int1_src_a)
print (val_int1_ths_a)
print (val_int1_duration_a)
print (val_int2_cfg_a)
print (val_int2_src_a)
print (val_int2_ths_a)
print (val_int2_duration_a)
print (val_click_cfg_a)
print (val_click_src_a)
print (val_click_ths_a)
print (val_time_limit_a)
print (val_time_latency_a)
print (val_time_window_a)
print ("----------------------------------------------------------------")
print (val_cra_reg_m)
print (val_crb_reg_m)
print (val_mr_reg_m)
print (val_out_x_h_m)
print (val_out_x_l_m)
print (val_out_z_h_m)
print (val_out_z_l_m)
print (val_out_y_h_m)
print (val_out_y_l_m)
print (val_sr_reg_m)
print (val_ira_reg_m)
print (val_irb_reg_m)
print (val_irc_reg_m)
print (val_temp_out_h_m)
print (val_temp_out_l_m)
print ("================================================================")
while i <= 100:
# time.sleep (3)
val_status_reg_a = bus.read_byte_data (device_a,status_reg_a)
i=i+1
if (val_status_reg_a > 0):
# i=i+1
val_out_x_h_m = bus.read_byte_data (device_m,out_x_h_m)
val_out_x_l_m = bus.read_byte_data (device_m,out_x_l_m)
val_out_z_h_m = bus.read_byte_data (device_m,out_z_h_m)
val_out_z_l_m = bus.read_byte_data (device_m,out_z_l_m)
val_out_y_h_m = bus.read_byte_data (device_m,out_y_h_m)
val_out_y_l_m = bus.read_byte_data (device_m,out_y_l_m)
val_out_x_l_a = bus.read_byte_data (device_a,out_x_l_a)
val_out_x_h_a = bus.read_byte_data (device_a,out_x_h_a)
val_out_y_l_a = bus.read_byte_data (device_a,out_y_l_a)
val_out_y_h_a = bus.read_byte_data (device_a,out_y_h_a)
val_out_z_l_a = bus.read_byte_data (device_a,out_z_l_a)
val_out_z_h_a = bus.read_byte_data (device_a,out_z_l_a)
print ("++++++++++++")
print (val_out_x_h_m)
print (val_out_x_l_m)
print (val_out_z_h_m)
print (val_out_z_l_m)
print (val_out_y_h_m)
print (val_out_y_l_m)
print ("------------")
print (val_out_x_h_a)
print (val_out_x_l_a)
print (val_out_z_h_a)
print (val_out_z_l_a)
print (val_out_y_h_a)
print (val_out_y_l_a)
print ("============")
print ("============")
print("P")
Alles anzeigen
Der Code wird später auf keinen Fall so verwendet.