// bool myCallback(int value) {
// // here your custom logic
// return status;
// }
// void myFunction(bool (*callback)(int)) {
// // here your custom logic
// bool status = callback(3);
// }
// void loop(void) {
// myFunction(&myCallback);
// }
/*
class Sched {
private:
public:
Sched() {};
Sched(bool (*f)(int), ms) {
_pinRheo = pinRheo;
_pinLed = pinLed;
}
void init() {
_tstamp = millis();
pinMode(_pinLed, OUTPUT);
}
void run() {
rheo = analogRead(_pinRheo);
_intvl = map(rheo, 0, 1023, 200, 1000);
if ((millis() - _tstamp) >= _intvl) {
_tstamp += _intvl;
if (_state == true) {
digitalWrite(_pinLed, LOW);
_state = false;
} else {
digitalWrite(_pinLed, HIGH);
_state = true;
}
}
}
};
*/
#include "DHT.h"
DHT dht(4, DHT22);
int long dhtT;
void getTemp() {
if ((millis() - dhtT) >= 2000) {
dhtT += 1000;
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// float hif = dht.computeHeatIndex(f, h);
// float hic = dht.computeHeatIndex(t, h, false);
// Serial.print(F("Humidity: "));
// Serial.print(h);
// Serial.print(F("% Temperature: "));
// Serial.print(t);
// Serial.print(F("°C "));
// Serial.print(f);
// Serial.print(F("°F Heat index: "));
// Serial.print(hic);
// Serial.print(F("°C "));
// Serial.print(hif);
// Serial.println(F("°F"));
Serial.print(f);
Serial.println(F("°F"));
if (f <= 32) {
digitalWrite(3, HIGH);
}
if (f > 32 && f < 90) {
digitalWrite(3, LOW);
digitalWrite(2, LOW);
}
if (f >= 90) {
digitalWrite(2, HIGH);
}
}
}
class Blinker {
private:
byte _pinRheo;
byte _pinLed;
int long _tstamp;
int _intvl;
bool _state = false;
int rheo;
public:
Blinker() {};
Blinker(byte pinRheo, byte pinLed) {
_pinRheo = pinRheo;
_pinLed = pinLed;
}
void init() {
_tstamp = millis();
pinMode(_pinLed, OUTPUT);
}
void run() {
rheo = analogRead(_pinRheo);
_intvl = map(rheo, 0, 1023, 200, 1000);
if ((millis() - _tstamp) >= _intvl) {
_tstamp += _intvl;
if (_state == true) {
digitalWrite(_pinLed, LOW);
_state = false;
} else {
digitalWrite(_pinLed, HIGH);
_state = true;
}
}
}
};
Blinker b1(A1, 12);
Blinker b2(A2, 11);
Blinker b3(A3, 10);
// TESTING
// int add(int a, int b, int c) {
// int r = a + b + c;
// return r;
// }
int fReturn() {
}
void setup() {
Serial.begin(9600);
// Serial.println(F("DHTxx test!"));
b1.init();
b2.init();
b3.init();
dht.begin();
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
}
void loop() {
b1.run();
b2.run();
b3.run();
getTemp();
// TESTING
// int total = add(analogRead(A1), analogRead(A2), analogRead(A3));
// Serial.println(total);
}