#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#ifndef STASSID
#define STASSID "MITAI2"
#define STAPSK "sstvsvl1"
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include <DHT.h>
#define DHTPIN D1
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
bool vymena=true;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP,"pool.ntp.org",3600);
unsigned long prewievmillis=0,currentmillis;
String dni[7]={"Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"};
String mesiace[12]={"Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December,"};
float h;
float t;
void meraj(){
t = dht.readTemperature();
h = dht.readHumidity();
}
void zobraz() {
display.setCursor(5,45);
display.print(F("Teplota:"));
display.print(t);
display.println(F("C"));
display.setCursor(5,55);
display.print(F("VLhkost:"));
display.print(h);
display.println(F("%"));
}
void setup() {
Serial.begin(115200);
Wire.begin(14,12);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);//nekonečný loop
}
delay(200);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
timeClient.begin();
pinMode(0, OUTPUT);
dht.begin();
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
if(currentmillis-prewievmillis>=5000){
currentmillis=millis();
display.clearDisplay();
display.drawRect(0,0,SCREEN_WIDTH - 1,SCREEN_HEIGHT -1,WHITE);
if(vymena){
time_t epochTime = timeClient.getEpochTime();
int den =timeClient.getDay();
struct tm *ptm = gmtime ((time_t *)&epochTime);
int mesiac =ptm->tm_mon;
int rok = ptm->tm_year+1900;
int monthDay = ptm->tm_mday;
timeClient.update();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5,10);
display.println((String(ptm->tm_mday)+"."+mesiace[mesiac]+"."+(rok)+","+dni[den]));
display.setCursor(5,25);
display.println(timeClient.getFormattedTime());
}
else{
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
meraj();
zobraz();
display.display();
}
vymena=!vymena;
}
}