// nano "thermo" project v1.2
// GyverOLED library used
// sensors: dht22
// display: ssd1306
#include <GyverOLED.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHT_A_PIN 2 // Digital pin connected to the DHT sensor A
#define DHT_B_PIN 3 // Digital pin connected to the DHT sensor B
#define DHT_A_TYPE DHT22 // DHT 22 (AM2302)
#define DHT_B_TYPE DHT22 // DHT 22 (AM2302)
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
// GyverOLED oled(0x3C);
DHT_Unified dht_A(DHT_A_PIN, DHT_A_TYPE);
DHT_Unified dht_B(DHT_B_PIN, DHT_B_TYPE);
void setup() {
oled.init(); // Initialize Display
oled.clear();
oled.setScale(1);
oled.setCursorXY(16, 17);
oled.print ("Lilyhammer Meteo");
oled.setCursorXY(16, 25);
oled.print ("by Andrey Sobina");
oled.update();
delay(2000);
oled.clear();
oled.setCursorXY(4, 9);
oled.println ("Initializing sensors");
oled.update();
delay(1000);
oled.roundRect(16, 25, 112, 41, OLED_STROKE);
oled.update();
delay(150);
oled.rect(20, 28, 27, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(29, 28, 36, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(38, 28, 45, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(47, 28, 54, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(56, 28, 63, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(65, 28, 72, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(74, 28, 81, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(83, 28, 90, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(92, 28, 99, 38, OLED_FILL);
oled.update();
delay(150);
oled.rect(101, 28, 108, 38, OLED_FILL);
oled.update();
delay(1000);
oled.clear();
dht_A.begin(); // Initialize Sensor A
dht_B.begin(); // Initialize Sensor B
Serial.begin(9600); // Initialize device
Serial.println(F("nano thermo project v1.2"));
Serial.println(F("GyverOLED library used"));
delay(2000);
oled.clear();
}
void loop() {
dht22();
}
void dht22() {
oled.clear(70, 1, 128, 64);
oled.home();
// Get temperature event from sensor A and print its value
sensors_event_t event;
dht_A.temperature().getEvent(&event);
if (isnan(event.temperature)) {
oled.println("Sauna:");
oled.println("Error reading temp");
}
else {
oled.println("Sauna:");
oled.print("Temperature: ");
oled.println(event.temperature);
}
// Get humidity event from sensor A and print its value
dht_A.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
oled.print("Error reading humid");
oled.println("");
}
else {
oled.print("Humidity: ");
oled.println(event.relative_humidity);
oled.println("");
}
// Get temperature event from sensor B and print its value
dht_B.temperature().getEvent(&event);
if (isnan(event.temperature)) {
oled.println("Sauna:");
oled.println("Error reading temp");
}
else {
oled.println("Room:");
oled.print("Temperature: ");
oled.println(event.temperature);
}
// Get humidity event from sensor B and print its value
dht_B.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
oled.print("Error reading humid");
oled.println("");
}
else {
oled.print("Humidity: ");
oled.println(event.relative_humidity);
oled.println("");
}
oled.update();
delay(5000);
}