-
-
Moderator
Robotik Einstein
Laut Doku dauert eine Messung 65ms. In dieser Zeit ist der I²C Bus blockiert. D.h. wenn ein Sensor misst kann kein anderer Busteilnehmer was machen.
D.h. dein Programm müsste dann so aussehne
I2C starten
I2C Adresse 1 übermitteln
I2C Maßeinheit übermitteln (81 für cm)
I2C Stop
65ms warten
I2C starten
I2C Adresse vom 1. Sensor
I2C Adresse vom 2. Register (für die Entfernung
I2C Stop
I2C starten
I2C Adresse vom 1. Sensor
I2C Lesen 1. Byte mit Ack
I2C Lesen 2. Byte mit Nack
I2C stop
Danach machste aus dem 1. und 2. Byte eine fertige Zahl.
Und diese Befehlsreihenfolge wiederholst du zwei mal für die anderen beiden Sensoren.
Die Sachen speicherst du dann in Variablen wie Sensor1, Sensor2 und Sensor3 und gibst die via UART und deinem FT232 an deinem PC aus.
Mit der Adressierung machste das wie folgt:
Du schließt einen(!) Sensor an dein Board an und schreibst ein Programm welches so aussieht:
I2C starten
I2C Adresse vom 1. Sensor
I2C Schreibe 0
I2C Schreibe A0
I2C Stop
Warte 50ms
I2C starten
I2C Adresse vom 1. Sensor
I2C Schreibe 0
I2C Schreibe AA
I2C Stop
Warte 50ms
I2C starten
I2C Adresse vom 1. Sensor
I2C Schreibe 0
I2C Schreibe A5
I2C Stop
Warte 50ms
I2C starten
I2C Adresse vom 1. Sensor
I2C Schreibe 0
I2C Schreibe z.B. F2 , mögliche Adressen stehen in der Doku
I2C Stop
Warte 50ms
So hast du dann die Adresse von dem Sensor geändert. Den machst du nun ab und machst einen anderen dran und nimmst dasselbe Programm aber die Stelle wo F2 steht wird durch eine andere ersetzt.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen