-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSensors.cpp
77 lines (62 loc) · 2.02 KB
/
Sensors.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "DHT.h"
#include "Sensors.h"
#include <TimeAlarms.h>
#define DHTTYPE DHT22 // DHT 22 (AM2302)
void pinPoweredSensor::turnPowerOn(void) {
analogWrite(powerPin, HIGH);
}
void pinPoweredSensor::turnPowerOff(void) {
analogWrite(powerPin, LOW);
}
byte pinPoweredSensor::getDataPin(void) {
return dataPin;
}
pinPoweredSensor::pinPoweredSensor(byte d, byte p, unsigned long pUI) {
dataPin = d;
powerPin = p;
powerUpInterval = pUI;
}
const float pinPoweredSensor::getReading(void) {
turnPowerOn();
Alarm.delay(powerUpInterval);
float r = fetchValue();
if(powerUpInterval != 0) {
turnPowerOff();
}
return r;
}
sensorAnalog::sensorAnalog (
byte dataPin,
byte powerPin,
unsigned long powerUpInterval,
float rH, // max possible reading
float rL // min possible reading
): pinPoweredSensor(dataPin, powerPin, powerUpInterval) {
highVoltage = 1024 * (3.0/5.0); // B - output from sensor is 3 volts range for arduino is 5
readingHigh = rH;
readingLow = rL;
};
float sensorAnalog::fetchValue(void) {
float d = analogRead(getDataPin());
return 1 + (d*(readingHigh-readingLow))/(highVoltage);
}
sensorDigital::sensorDigital(byte dataPin, byte powerPin, unsigned long powerUpInterval) :
pinPoweredSensor(dataPin, powerPin, powerUpInterval) {};
float sensorDigital::fetchValue(void) {
return digitalRead(getDataPin());
}
sensorDT22::sensorDT22(byte dataPin, byte powerPin, unsigned long powerUpInterval) :
pinPoweredSensor(dataPin, powerPin, powerUpInterval) {
dht = new DHT(getDataPin(), DHT22);
}
sensorHumidity::sensorHumidity(byte dataPin, byte powerPin, unsigned long powerUpInterval) :
sensorDT22(dataPin, powerPin,powerUpInterval) {};
float sensorHumidity::fetchValue(void) {
float h = dht->readHumidity();
}
sensorTemp::sensorTemp(byte dataPin, byte powerPin, unsigned long powerUpInterval) :
sensorDT22(dataPin, powerPin,powerUpInterval) {};
float sensorTemp::fetchValue(void) {
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht->readTemperature(true);
}