Mesurer la rotation et l’accélération avec le Raspberry Pi

#! / usr / bin / python

importation smbus

importation math

# S’inscrire

power_mgmt_1 = 0x6b

power_mgmt_2 = 0x6c

def read_byte(reg):

revenir autobus.read_byte_data(adresse, reg)

def read_word(reg):

h = autobus.read_byte_data(adresse, reg)

l = autobus.read_byte_data(adresse, reg+1)

valeur = (h << 8) + l

revenir valeur

def read_word_2c(reg):

val = read_word(reg)

si (val > = 0x8000):

revenir ((65535 val) + 1)

autre:

revenir val

def dist(une,b):

revenir math.sqrt((une*une)+(b*b))

def get_y_rotation(X,y,z):

radians = math.atan2(X, dist(y,z))

revenir math.degrés(radians)

def get_x_rotation(X,y,z):

radians = math.atan2(y, dist(X,z))

revenir math.degrés(radians)

autobus = smbus.SMBus(1) # bus = smbus.SMBus (0) fuer Révision 1

adresse = 0x68 # via i2cdetect

# Aktivieren, um das Modul ansprechen zu koennen

autobus.write_byte_data(adresse, power_mgmt_1, 0)

impression “Gyroskop”

impression “——–“

gyroskop_xout = read_word_2c(0x43)

gyroskop_yout = read_word_2c(0x45)

gyroskop_zout = read_word_2c(0x47)

impression “gyroskop_xout:”, (“% 5d” % gyroskop_xout), “skaliert:”, (gyroskop_xout / 131)

impression “gyroskop_yout:”, (“% 5d” % gyroskop_yout), “skaliert:”, (gyroskop_yout / 131)

impression “gyroskop_zout:”, (“% 5d” % gyroskop_zout), “skaliert:”, (gyroskop_zout / 131)

impression

impression “Beschleunigungssensor”

impression “———————“

beschleunigung_xout = read_word_2c(0x3b)

beschleunigung_yout = read_word_2c(0x3d)

beschleunigung_zout = read_word_2c(0x3f)

beschleunigung_xout_skaliert = beschleunigung_xout / 16384.0

beschleunigung_yout_skaliert = beschleunigung_yout / 16384.0

beschleunigung_zout_skaliert = beschleunigung_zout / 16384.0

impression “beschleunigung_xout:”, (“% 6d” % beschleunigung_xout), “skaliert:”, beschleunigung_xout_skaliert

impression “beschleunigung_yout:”, (“% 6d” % beschleunigung_yout), “skaliert:”, beschleunigung_yout_skaliert

impression “beschleunigung_zout:”, (“% 6d” % beschleunigung_zout), “skaliert:”, beschleunigung_zout_skaliert

impression “Rotation X:” , get_x_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)

impression “Rotation Y:” , get_y_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)

Articles similaires

Bouton retour en haut de la page
Fermer