Hallo
Ich fange grade erst mit dem Raspberry Pi und Python an und habe mir dazu ein Buch gekauft in dem ein kleines Roboterauto gebaut und per Python Programme gesteuert wird.
Verbaut werden da unter anderem zwei Time of Flight Sensoren die über den I²C Bus gesteuert werden. Da beide Sensoren die gleiche Adresse (29) haben soll laut Buch immer ein Sensor über den XSHUT Pin auf Low bzw. High gesetzt werden.
Ausgelesen werden die Sensoren mit folgendem Programm:
#!/usr/bin/env python
import time
import VL53L1X
import RPi.GPIO as io
io.setmode(io.BCM)
io.setwarnings(False)
# Zugriff auf den ToF Sensor ueber Opjekt tof
tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
# Sensor wird mit dieser Funkrion aktiv gesetzt, GPIO-Pin Nummer muss mit uebergeben werden
def start_sensor(number):
# XSHUT-Pin auf HIGH setzen um den Sensor zu aktivieren
io.setup(number, io.OUT)
io.output(number, True)
time.sleep(0.2)
# Zugriff auf den Sensor
tof.open()
# drei Modi fuer die Messung:
# 1 = Short Range
# 2 = Medium Range
# 3 = Long Range
tof.start_ranging(1)
# Funktion um Sensor anzuhalten, GPIO-Pin Nummer muss mit uebergeben werden
def stop_sensor(number):
tof.stop_ranging()
# XSHUT Pin auf LOW setzen
io.output(number, False)
# Funktion liest gemessene Entfernung aus
def get_distance():
distance_in_mm = 0
distance_in_mm = tof.get_distance()
return distance_in_mm
Alles anzeigen
Dieses wird über ein zweites Programm aufgerufen dass die Werte der Sensoren im Terminal anzeigt. Starte ich nun dieses Programm bekomme ich einen Fehler dass die Adresse 29 nicht gefunden wurde. Weil sich da scheinbar beide Sensoren in die quere kommen.
Hier der Fehler aus dem Terminal:
Traceback (most recent call last):
File "display_VL53L1X.py", line 5, in <module>
import read_VL53L1X as dist
File "/home/pi/robot/read_VL53L1X.py", line 28, in <module>
tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
File "/usr/local/lib/python2.7/dist-packages/VL53L1X.py", line 97, in __init__
raise RuntimeError("VL53L1X not found on adddress: {:02x}".format(self.i2c_address))
RuntimeError: VL53L1X not found on adddress: 29
Stecke ich den XSHUT Pin von einem Sensor ab dann läuft das Programm und liest die Werte aus.
Ich habe die verkabelung und die Programme jetzt schon mehrfach kontrolliert und habe alles so wie in dem Buch beschrieben. Da ich in dem Buch vorher schon auf den ein oder anderen Fehler gestoßen bin würde ich das also hier auch nicht ausschließen. Ich selbst komme da jetzt aber nicht so recht weiter. Vielleicht kann mir hier ja jemand auf die sprünge helfen?