diff --git a/README.md b/README.md index 529292906192e44010a5de861728a4a6122f610a..13de22b8d615fb9f601d20633b9f3f1573b93c72 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Getestet mit: ## **Vorausetzung** -- Die Bibliothek Adafruit_VL53L0X muss installiert sein.<br /> +- [Adafruit_VL53L0X](https://github.com/adafruit/Adafruit_VL53L0X) von Adafruit.<br /> <br /> ## **Installation:** @@ -17,43 +17,45 @@ Getestet mit: Um diese Bibliothek verwenden zu können, muss dieses Repository geklont und in das Library-Verzeichnis der Arduino-IDE kopiert werden.<br /> <br /> -Um die Anzahl der Time of Flight Sensoren, die zugehörigen XShut Pin Belegungen, sowie die Adressen der Sensoren anzupassen, müssen in der `time_of_flight_controller.h` Datei folgende Parameter bearbeitet werden: - -- `SENSOR_COUNT`: Anzahl der zu Verwendenden Time of Flight Sensoren. -- `TOF_XSHUTS`: Pinbelegungen der XShut Pins von den einzelnen Sensoren. -- `TOF_ADDRESSES`: Adressen der einzelnen Sensoren. - -Möchte man mehr als 5 Time of Flight Sensoren verwenden, so müssen ebenfalls anpassungen an der Liste `sensors[]` gemacht, so wie weitere *Adafruit_VL53L0X* Objekte instanziiert werden.<br /> -<br /> - -## **Anwendung**:<br /> -<br /> - -Zur Verwendung siehe zunächst das Beispiel `measurement.ino` +## **Anwendung**: +Zur Verwendung siehe zunächst das Beispiel `measurement.ino`<br /> <br /> **Einbinden der Bibliothek:** + ```arduino #include "bits_time_of_flight_controller.h" ``` **Instanziieren:** + ```arduino bits_TimeOfFlightController tof_controller(max_distance); ``` --`max_distance`: Maximale Distanz in mm. Gemessene Abstände größer als diesen Wert werden als -1 zurück gegeben. +- `max_distance`: Maximale Distanz in mm. Gemessene Abstände größer als diesen Wert werden als -1 zurück gegeben.<br /> +<br /> **Zum messen mit den Time of Flight Sensoren wird folgende Methode verwendet:** + ```arduino int value = tof_controller.get_distance_mm(index); int value = tof_controller.get_distance_cm(index); ``` -- `index`: Time of Flight Sensor Nummer 0-4 - +- `index`: Time of Flight Sensor Nummer 0-4<br /> <br /> +## **Anmerkungen**: + +Um die Anzahl der Time of Flight Sensoren, die zugehörigen XShut Pin Belegungen, sowie die Adressen der Sensoren anzupassen, müssen in der `time_of_flight_controller.h` Datei folgende Parameter bearbeitet werden: + +- `SENSOR_COUNT`: Anzahl der zu Verwendenden Time of Flight Sensoren. +- `TOF_XSHUTS`: Pinbelegungen der XShut Pins von den einzelnen Sensoren. +- `TOF_ADDRESSES`: Adressen der einzelnen Sensoren. + +Möchte man mehr als 5 Time of Flight Sensoren verwenden, so müssen ebenfalls anpassungen an der Liste `sensors[]` gemacht, so wie weitere *Adafruit_VL53L0X* Objekte instanziiert werden.<br /> +<br /> ## **Quellen:** diff --git a/bits_time_of_flight_controller.cpp b/bits_time_of_flight_controller.cpp index 195d29e57bbfde7c309029d122e8c95694e961c0..4fb04bb47bb958191a7838ab0c24c52e6732ab84 100644 --- a/bits_time_of_flight_controller.cpp +++ b/bits_time_of_flight_controller.cpp @@ -4,17 +4,14 @@ bits_TimeOfFlightController::bits_TimeOfFlightController(const uint16_t max_dist void bits_TimeOfFlightController::init() { + bool found_any_sensors = false; + for (int i = 0; i < SENSOR_COUNT; i++) { pinMode(sensors[i].shutdown_pin, OUTPUT); digitalWrite(sensors[i].shutdown_pin, LOW); } - bool found_any_sensors = false; - for (int i = 0; i < SENSOR_COUNT; i++) - { - digitalWrite(sensors[i].shutdown_pin, LOW); - } delay(10); for (int i = 0; i < SENSOR_COUNT; i++) @@ -41,7 +38,7 @@ void bits_TimeOfFlightController::init() { } } -int bits_TimeOfFlightController::get_distance_cm(int index) { +int bits_TimeOfFlightController::get_distance_mm(int index) { VL53L0X_RangingMeasurementData_t measure; sensors[index].psensor->rangingTest(&measure, false); // 'true' um debug Informationen auszugeben @@ -49,7 +46,7 @@ int bits_TimeOfFlightController::get_distance_cm(int index) { int distance; if ((measure.RangeStatus != 4) && (measure.RangeMilliMeter < max_distance)) { - distance = measure.RangeMilliMeter / 10; + distance = measure.RangeMilliMeter; _print_tof_(index); _print_tof_(" Sensor Entfernung (cm): "); _println_tof_(distance); @@ -57,30 +54,14 @@ int bits_TimeOfFlightController::get_distance_cm(int index) { else { _println_tof_(" Ausserhalb des Messbereichs "); - distance = max_distance/10+1; + distance = max_distance+1; } return distance; } -int bits_TimeOfFlightController::get_distance_mm(int index) { - VL53L0X_RangingMeasurementData_t measure; - - sensors[index].psensor->rangingTest(&measure, false); // 'true' um debug Informationen auszugeben - - int distance; - if ((measure.RangeStatus != 4) && (measure.RangeMilliMeter < max_distance)) - { - distance = measure.RangeMilliMeter; - _print_tof_(index); - _print_tof_(" Sensor Entfernung (cm): "); - _println_tof_(distance); - } - else - { - _println_tof_(" Ausserhalb des Messbereichs "); - distance = max_distance+1; - } +int bits_TimeOfFlightController::get_distance_cm(int index) { + int distance = get_distance_mm(index)/10; return distance; } \ No newline at end of file diff --git a/examples/measurement/measurement.ino b/examples/measurement/measurement.ino index 57d701f3b44a07c8bceea94958d29afbb2f5fbbf..711c5b02b5787fbc64c815f5f2df01fd044aa577 100644 --- a/examples/measurement/measurement.ino +++ b/examples/measurement/measurement.ino @@ -1,3 +1,17 @@ +/* BITS-i ToF-Sensor shematic + * + * +----#2------------#3----+ + * | | + * | <------ | + * | #0 BITS-i | + * | | + * | | + * +----#1------------#4----+ + * + * #0 - #4: Time of Flight Sensoren + */ + + // #define DEBUG_TOF #include "bits_time_of_flight_controller.h"