#include <SSD1306Wire.h> //Library for SSD 1306 using "ESP8266 and ESP32 OLED driver for SSD1306 displays"
#include <OneWire.h>
#include <DallasTemperature.h>
//#include <SPI.h>
//#include <Bonezegei_DHT11.h>
#include <DHT.h>
#define OLED_SDA 4
#define OLED_SCL 5
//Choose pins for Dallas DS18B20
const int oneWireBus1 = 1;
const int oneWireBus2 = 2;
//Declaration for use OneWire interface for D1 and D2
OneWire oneWire(oneWireBus1);
OneWire oneWire2(oneWireBus2);
//Declaration for use OneWire interface for DS18B20
DallasTemperature sensors (&oneWire);
DallasTemperature sensors2 (&oneWire2);
//param = DHT11 signal pin
int DHTPIN = 3;
#define DHTTYPE DHT22
#define TIMEDHT 1000
//int LED_BUILTIN = 2;
//Bonezegei_DHT11 dht(pinDHT);
DHT dht(DHTPIN, DHTTYPE);
// Initialize the OLED display using Arduino Wire:
SSD1306Wire display(0x3c, OLED_SDA, OLED_SCL); // ADDRESS, SDA, SCL - SDA and SCL usually populate automatically based on your board's pins_arduino.h e.g. https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Reset");
Serial.println();
// Initialising the UI will init the display too.
display.init();
display.flipScreenVertically();
// Start biblioteki DS18B20
sensors.begin();
delay(20);
sensors2.begin();
delay(20);
dht.begin();
}
long int czas_ostatniego_pomiaru ;
long int interwal_miedzypomiarami = 2000;
String tempC1;
String tempC2;
String tempC3;
String humid3;
void loop() {
// clear the display
display.clear();
if ((millis()-czas_ostatniego_pomiaru) > interwal_miedzypomiarami) {
sensors.requestTemperatures();
delay(100);
sensors2.requestTemperatures();
delay(100);
//dht.getData();
float temperatureC1 = sensors.getTempCByIndex(0);
delay(50);
float temperatureC2 = sensors2.getTempCByIndex(0);
delay(50);
float tempDeg = dht.readTemperature();
//float tempFar = dht.getTemperature(true);
int hum = dht.readHumidity();
tempC1 = String(temperatureC1, 2)+" °C";
tempC2 = String(temperatureC2, 2)+" °C";
tempC3 = String(tempDeg, 2)+" °C";
humid3 = String(hum, DEC)+" %RH";
czas_ostatniego_pomiaru = millis();
Serial.println("=================================");
Serial.println(".... DHT"+ String(DHTTYPE) +"....");
Serial.println("Temperatura = "+tempC3);
Serial.println("Wilgotność = "+humid3);
Serial.println("... DS18B20...");
Serial.println(sensors.getTempCByIndex(0));
Serial.println("Temperatura 1 ="+tempC1);
Serial.println("Temperatura 2 ="+tempC2);
Serial.println(czas_ostatniego_pomiaru);
}
display.drawCircle(64, 32, 16);
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 27, String(millis()-czas_ostatniego_pomiaru));
display.drawHorizontalLine(4, 52, 119);
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(4, 2, tempC3);
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(123, 2, humid3);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(4, 52, tempC1);
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(123, 52, tempC2);
display.display();
}