diff --git a/lowcar/devices/UltrasonicSensor/UltrasonicSensor.cpp b/lowcar/devices/UltrasonicSensor/UltrasonicSensor.cpp index 528771ee..a2ff1c27 100644 --- a/lowcar/devices/UltrasonicSensor/UltrasonicSensor.cpp +++ b/lowcar/devices/UltrasonicSensor/UltrasonicSensor.cpp @@ -1,17 +1,29 @@ #include "UltrasonicSensor.h" // pin definitions for the ultrasonic sensor -#define TRIG_PIN 16 -#define ECHO_PIN 14 +#define TRIG_PIN 14 +#define ECHO_PIN 16 UltrasonicSensor::UltrasonicSensor() : Device(DeviceType::ULTRASONIC_SENSOR, 17) { - ; + this->distance = 0; } size_t UltrasonicSensor::device_read(uint8_t param, uint8_t* data_buf) { + float* float_buf = (float*) data_buf; + float_buf[0] = this->distance; + + return sizeof(float); +} + +void UltrasonicSensor::device_enable() { + pinMode(TRIG_PIN, OUTPUT); + pinMode(ECHO_PIN, INPUT); +} + +void UltrasonicSensor::device_actions() { // trigger the ultrasonic pulse digitalWrite(TRIG_PIN, LOW); - delayMicroseconds(2); + delayMicroseconds(10); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); @@ -20,13 +32,5 @@ size_t UltrasonicSensor::device_read(uint8_t param, uint8_t* data_buf) { long duration = pulseIn(ECHO_PIN, HIGH); float distance = duration * 0.034f / 2.0f; // convert to cm - float* float_buf = (float*) data_buf; - float_buf[0] = distance; - - return sizeof(float); -} - -void UltrasonicSensor::device_enable() { - pinMode(TRIG_PIN, OUTPUT); - pinMode(ECHO_PIN, INPUT); + this->distance = distance; } \ No newline at end of file diff --git a/lowcar/devices/UltrasonicSensor/UltrasonicSensor.h b/lowcar/devices/UltrasonicSensor/UltrasonicSensor.h index 53c1e4f2..8ad1ed10 100644 --- a/lowcar/devices/UltrasonicSensor/UltrasonicSensor.h +++ b/lowcar/devices/UltrasonicSensor/UltrasonicSensor.h @@ -12,10 +12,10 @@ class UltrasonicSensor : public Device { virtual size_t device_read(uint8_t param, uint8_t* data_buf); virtual void device_enable(); + virtual void device_actions(); private: - static uint8_t trigPin; - static uint8_t echoPin; + float distance; }; #endif