Skip to content
Prev Previous commit
Next Next commit
small errors
  • Loading branch information
jahnavithota2011 committed Mar 28, 2022
commit 994c81ac3a84102558675e184a94d6778bb9cba7
10 changes: 10 additions & 0 deletions libs/sensors/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,13 @@ target_link_libraries(CurrentSensor
Sensor
mbed-os
)
add_library(PollingSensors STATIC)
target_sources(PollingSensors PRIVATE src/PollingSensors.cpp)
target_include_directories(PollingSensors PUBLIC include)
target_link_libraries(PollingSensors
PRIVATE
Sensor
mbed-os
Logger
)

48 changes: 38 additions & 10 deletions libs/sensors/include/PollingSensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,41 @@
#include "Sensor.h"
#include "mbed.h"

class PollingSensors final : Sensor {
public:
PollingSensors(PinName clk, PinName miso, PinName cs = NC);
float read() override;
float alternateRead() override;
bool getStatus() const override;
[[nodiscard]] bool reset() override;
[[nodiscard]] bool update() override;
// Add functions specific to sensor modules
};
namespace Sensor {
class PollingSensors final : Sensor {
public:
PollingSensors();

// float read() override;
//
// float alternateRead() override;
//
// bool getStatus() const override;
//
// [[nodiscard]] bool reset() override;
//
// [[nodiscard]] bool update() override;

/* Functions specific to sensor modules*/

/* This function returns Moisture sensor value
* 0-300 - dry
* 300-700 - humid
* 700-900 - wet
* Returns -1 for fault
* */
float moisture_monitoring();

/* This function returns CO2 sensor value in ppm\
* Returns -1 for fault and 0 for preheating
* */
float C02_monitoring();

private:
/*Pins configuration for moisture sensing*/
AnalogIn moisture_in_adc;

/*Pins configuration for CO2 sensing*/
AnalogIn CO2_in_adc;
};
}
30 changes: 30 additions & 0 deletions libs/sensors/src/PollingSensors.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include "PollingSensors.h"

#include "Logger.h"

PollingSensors::PollingSensors() : moisture_in_adc(MOISTURE_IN), CO2_in_adc(CO2_IN) {}

// The function currently logs a status message. Can be changed to return just a float indicating the sensor value
float moisture_monitoring() {
float moisture_reading = (moisture_in_adc.read_voltage() * 5.0) / 1023.0;

if (moisture_reading < 0 && moisture_reading > 900) {
Utility::logger << "!!! MOISTURE FAULT:" << moisture_reading << "\n";
return -1;
}
return moisture_reading;
}

float C02_monitoring() {
float CO2_reading = CO2_in_adc.read_voltage() * 1000;

if (CO2_reading <= 0) {
Utility::logger << "!!! CO2 FAULT:" << CO2_reading << "\n";
return -1;
} else if (CO2_reading < 400) {
Utility::logger << "!!! CO2 PREHEATING:" << CO2_reading << "\n";
return 0;
}
float concentration = ((CO2_reading - 400) * 50.0) / 16.0;
return concentration;
}
Loading