160 lines
3.4 KiB
C++
160 lines
3.4 KiB
C++
#include <SPI.h>
|
|
#include <Wire.h>
|
|
#include <Adafruit_GFX.h>
|
|
#include <Adafruit_SSD1306.h>
|
|
#include "DHT.h"
|
|
#include "RTClib.h"
|
|
|
|
#define Version "rtc: 0.7"
|
|
#define WIRE Wire
|
|
#define DHTTYPE DHT22
|
|
#define DHTPIN 4
|
|
|
|
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &WIRE);
|
|
DHT dht(DHTPIN, DHTTYPE);
|
|
RTC_DS3231 rtc; // Obiekt dla DS3231
|
|
|
|
|
|
float hum;
|
|
float temp;
|
|
float heat_idx;
|
|
|
|
|
|
int mins;
|
|
int secs;
|
|
int hourss;
|
|
int dayss;
|
|
int months;
|
|
int years;
|
|
char dateString[21];
|
|
void setup() {
|
|
|
|
Serial.begin(115200);
|
|
Wire.begin(21, 22);
|
|
if (!rtc.begin()) {
|
|
Serial.println("Nie znaleziono DS3231 RTC!");
|
|
while (1); // Zatrzymaj program, jeśli RTC nie jest dostępny
|
|
}
|
|
|
|
//Ustawianie daty i godziny:
|
|
// rtc.adjust(DateTime(2025, 2, 10, 20, 35, 30));
|
|
|
|
|
|
|
|
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32
|
|
display.setTextSize(1);
|
|
display.setTextColor(SSD1306_WHITE);
|
|
display.clearDisplay();
|
|
display.println("Version:");
|
|
display.setCursor(0, 8);
|
|
display.println(Version);
|
|
display.setCursor(0, 16);
|
|
display.println("DHT22");
|
|
display.setCursor(0, 24);
|
|
display.println("RTC: DS3231");
|
|
|
|
display.display();
|
|
delay(1000);
|
|
dht.begin();
|
|
|
|
|
|
}
|
|
|
|
void loop() {
|
|
delay(1000);
|
|
|
|
|
|
hum = dht.readHumidity();
|
|
temp = dht.readTemperature();
|
|
// Compute heat index in Celsius (isFahreheit = false)
|
|
heat_idx = dht.computeHeatIndex(temp, hum, false);
|
|
|
|
|
|
//HUM&TEMP
|
|
//#########################################
|
|
display.clearDisplay();
|
|
display.setCursor(0,0);
|
|
display.println("Hum:");
|
|
display.setCursor(60,0);
|
|
display.println(hum);
|
|
display.setCursor(95,0);
|
|
display.println("%");
|
|
|
|
display.setCursor(0,8);
|
|
display.println("Temp:");
|
|
display.setCursor(60,8);
|
|
display.println(temp);
|
|
display.setCursor(95,8);
|
|
display.println("C");
|
|
|
|
display.setCursor(0,16);
|
|
display.println("Temp idx:");
|
|
display.setCursor(60,16);
|
|
display.println(heat_idx);
|
|
display.setCursor(95,16);
|
|
display.println("C");
|
|
|
|
|
|
//dla indexu: Caution: > 27*C
|
|
// Extreme Caution: > 32 *C
|
|
// Danger: > 40 *C
|
|
// Extreme Danger: > 52 *C
|
|
//#########################################
|
|
|
|
DateTime now = rtc.now();
|
|
|
|
Serial.print(now.year(), DEC);
|
|
Serial.print('/');
|
|
Serial.print(now.month(), DEC);
|
|
Serial.print('/');
|
|
Serial.print(now.day(), DEC);
|
|
Serial.print(" ");
|
|
Serial.print(now.hour(), DEC);
|
|
Serial.print(':');
|
|
Serial.print(now.minute(), DEC);
|
|
Serial.print(':');
|
|
Serial.print(now.second(), DEC);
|
|
Serial.println();
|
|
years = now.year();
|
|
months = now.month();
|
|
dayss = now.day();
|
|
hourss = now.hour();
|
|
mins = now.minute();
|
|
secs = now.second();
|
|
|
|
// display.setCursor(0,24);
|
|
// display.println(dayss);
|
|
// display.setCursor(13,24);
|
|
// display.println("-");
|
|
//display.setCursor(20,24);
|
|
//display.println(months);
|
|
//display.setCursor(31,24);
|
|
//display.println("-");
|
|
//display.setCursor(38,24);
|
|
//display.println(years);
|
|
//
|
|
//
|
|
// display.setCursor(75,24);
|
|
// display.println(hourss);
|
|
// display.setCursor(86,24);
|
|
// display.println(":");
|
|
// display.setCursor(92,24);
|
|
// display.println(mins);
|
|
// display.setCursor(104,24);
|
|
// display.println(":");
|
|
// display.setCursor(109,24);
|
|
// display.println(secs);
|
|
|
|
|
|
sprintf(dateString, "%02d/%02d/%4d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second());
|
|
display.setCursor(0,24);
|
|
display.println(dateString);
|
|
|
|
|
|
display.display();
|
|
|
|
yield();
|
|
|
|
|
|
}
|