nongeneric_sensor.h
unknown
c_cpp
2 years ago
2.1 kB
7
Indexable
// // Created by DripTooHard on 08-07-2023. // #ifndef PROTOBLETEST_NONGENERIC_SENSOR_H #define PROTOBLETEST_NONGENERIC_SENSOR_H #include "Arduino.h" #include "arrayUtil.h" #include "driver/adc.h" #define ADC_RESOLUTION 4096 #define ADC_REF_VOLT 3.3 /** * A simple analog sensor, that has a pin it reads from. */ class Simple_Analog_Sensor{ protected: int read_pin; virtual bool isADCPin(int GPIO_pin); public: //Returns the voltage reading virtual float read_voltage(); //Returns the raw reading virtual int read(); virtual int set_read_pin(int new_pin); virtual int get_read_pin(); Simple_Analog_Sensor(int read_pin); virtual ~Simple_Analog_Sensor(); }; /** * */ class Simple_SWC_Sensor : public Simple_Analog_Sensor { protected: int pwr_pin{}; void turn_on_sensor(); void turn_off_sensor(); bool isADCPin(int GPIO_pin); /** * mode [IN]: 0 for turn off, 1 for turn on */ void turn_sensor(int mode); public: /** * @pre: readPin is an ADC pin * @param readPin * @param pwr_pin */ Simple_SWC_Sensor(int read_Pin, int pwr_pin) : Simple_Analog_Sensor(read_Pin) { if(!isADCPin(read_Pin)){ log_e("%s","ERROR IN INITIALIZING SIMPLE_SWC_SENSOR: PIN IS NOT AN ADC"); throw std::domain_error("PIN IS NOT AN ADC"); } //pinMode(read_Pin,INPUT); this->read_pin = read_Pin; pinMode(pwr_pin,OUTPUT); this->pwr_pin = pwr_pin; }; /** * @post: Sensor is turned off * @attention: There is a 1 second delay before it reads the sensor value * @return */ int read(); float read_voltage(); int set_read_pin(int new_pin); int get_read_pin(); //Method that indicates whether the sensor should be changed. int isTimeToChange(); int get_pwr_pin(); int set_pwr_pin(int new_pin); }; #endif //PROTOBLETEST_NONGENERIC_SENSOR_H
Editor is loading...