diff --git a/libs/sensors/CMakeLists.txt b/libs/sensors/CMakeLists.txt index 835cb5c9..13b2a7a6 100644 --- a/libs/sensors/CMakeLists.txt +++ b/libs/sensors/CMakeLists.txt @@ -21,3 +21,13 @@ target_link_libraries(CurrentSensor Sensor mbed-os ) + +add_library(ProximitySwitch STATIC) +target_sources(ProximitySwitch PRIVATE src/ProximitySwitch.cpp) +target_include_directories(ProximitySwitch PUBLIC include) +target_link_libraries(ProximitySwitch + PRIVATE + Sensor + mbed-os + Logger + ) \ No newline at end of file diff --git a/libs/sensors/include/ProximitySwitch.h b/libs/sensors/include/ProximitySwitch.h new file mode 100644 index 00000000..5c6de5a2 --- /dev/null +++ b/libs/sensors/include/ProximitySwitch.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Sensor.h" +#include "mbed.h" + +namespace Sensor { +class ProximitySwitch final : Sensor { + public: + ProximitySwitch(PinName proximity_in); + + // read() returns 1 for HIGH, 0 for LOW, and 2 for ERROR + float read() override; + float alternateRead() override {} + bool getStatus() const override {} + [[nodiscard]] bool reset() override {} + [[nodiscard]] bool update() override {} + + private: + DigitalIn m_proximity_in_adc; +}; +} // namespace Sensor \ No newline at end of file diff --git a/libs/sensors/src/ProximitySwitch.cpp b/libs/sensors/src/ProximitySwitch.cpp new file mode 100644 index 00000000..bb40faab --- /dev/null +++ b/libs/sensors/src/ProximitySwitch.cpp @@ -0,0 +1,17 @@ +#include "ProximitySwitch.h" + +#include "Logger.h" + +using namespace Sensor; + +ProximitySwitch::ProximitySwitch(PinName proximity_in) : m_proximity_in_adc(proximity_in) {} + +/*https://www.dfrobot.com/product-2025.html*/ +float ProximitySwitch::read() { + if (m_proximity_in_adc.is_connected()) { + return m_proximity_in_adc.read(); + } else { + Utility::logger << "ERROR: Sensor pin not connected"; + return 2; + } +}