Hallo zusammen,
ich hänge jetzt schon länger fest an dem Versuch den MMA7455 über I2C auszulesen!
Handelt sich dabei um Folgenden: MMA7455
Habe den soweit(meiner Meinung nach) korrekt verbunden. VCC an 3,3V, GND an Masse, SDA an Pin 3 und SCL an Pin 5!
Da ich das erste Mal mit I2C arbeite, habe ich Moment so meine Probleme.
Über i2cdetect -y 1 wird Folgendes ausgegeben
pi@raspberrypi ~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- 3b 3c 3d -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Das ist schon mein erstes Problem. Ist das normal, dass ein Gerät, als drei Geräte ausgegeben werden kann? (edit: Ok gerade ist mir in den Sinn gekommen, dass evtl. für jede Achse ein Gerät angezeigt wird)
Habe dann Folgendes Skript im Internet gefunden und versucht auszuprobieren:
#!/usr/bin/python
import smbus
import time
import os
# import graphics
# Define a class called Accel
class Accel() :
b = smbus.SMBus(1)
def setUp(self):
# Setup the Mode
self.b.write_byte_data(0x3B ,0x16 ,0x55)
# Setup Calibration
self.b.write_byte_data(0x3B ,0x10 ,1)
self.b.write_byte_data(0x3B ,0x11 ,1)
self.b.write_byte_data(0x3B ,0x12 ,1)
self.b.write_byte_data(0x3B ,0x13 ,1)
self.b.write_byte_data(0x3B ,0x14 ,1)
self.b.write_byte_data(0x3B ,0x15 ,1)
def getValueX(self):
return self.b.read_byte_data (0x1D ,0x06 )
def getValueY(self):
return self.b.read_byte_data (0x1D ,0x07 )
def getValueZ(self):
return self.b.read_byte_data(0x1D ,0x08 )
MMA7455 = Accel()
MMA7455.setUp()
for a in range(10000) :
x = MMA7455.getValueX()
y = MMA7455.getValueY()
z = MMA7455.getValueZ()
print " x = " , x , " \ t [ " , " = " * (80 * x / 256) , " " * (80 - (80 * x/ 256) ) , " ] " , (80 * x / 256) , " % "
print " y = " , y , " \ t [ " , " = " * (80 * y / 256) , " " * (80 - (80 * y/ 256) ) , " ] " , (80 * y / 256) , " % "
print " z = " , z , " \ t [ " , " = " * (80 * z / 256) , " " * (80 - (80 * z/ 256) ) , " ] " , (80 * z / 256) , " % "
time.sleep (0.1)
os.system ( ' clear ')
Alles anzeigen
Originalcode hier: Klick!
Allerdings erhalte ich immer diese Fehlermeldung:
pi@raspberrypi ~ $ sudo python MMA7455.py
Traceback (most recent call last):
File "MMA7455.py", line 30, in <module>
MMA7455.setUp()
File "MMA7455.py", line 11, in setUp
self.b.write_byte_data(0x3B ,0x16 ,0x55)
IOError: [Errno 5] Input/output error
Das Gerät scheint also nicht zu existieren!
Kann mir vllt. jemand helfen, was ich genau anders machen muss?
Vielen Dank!