Zatreba li vam vrijeme u vašem projektu a nemate RTC modul možete ga saznati i na internetu.
Zatreba li vam vrijeme u vašem projektu a nemate RTC modul možete ga saznati i na internetu
Ovaj primjer je realiziran korištenjem mikrokontrolera NodeMCU baziranog oko ESP8266 čipa.

#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
#include <Wire.h>
int sat,minuta,sekunda,sat_off,minuta_off,sekunda_off;
unsigned long pocetak_sat_web,sek_od_web_sync;
int last = millis();
unsigned long pocetak_web,razlika_web;
String rijec,primljeno;
void setup()
{
Serial.begin(115200);
Serial.println("Spajanje na WiFi");
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("MojaWiFi", "12345678");//ovdje dodajte parametre svoje wifi mreže
WiFiMulti.addAP("TvojaWiFi", "11112222");
delay(1000);
web(); // dohvaćanje vremena s web-a
pocetak_web=millis();
lcd.init();
lcd.backlight();
lcd.print("Vrijeme");
}
void loop(void)
{
razlika_web=millis()-pocetak_web;
if (millis() - last >= 1000) { //osvježavanje svakih 1 sec
last = millis();
int sek_sa_web=sat*60*60+minuta*60+sekunda;
sek_od_web_sync=int((millis()-pocetak_sat_web)/960);
int sek_offline=sek_sa_web+sek_od_web_sync;
sat_off=int(sek_offline /3600);
int ostatak_sek_za_proracun = sek_offline-sat_off*3600;
minuta_off=int(ostatak_sek_za_proracun/60);
ostatak_sek_za_proracun = ostatak_sek_za_proracun-(minuta_off*60);
sekunda_off=ostatak_sek_za_proracun;
Serial.print(sat_off);
Serial.print(":");
Serial.print(minuta_off);
Serial.print(":");
Serial.println(sekunda_off);
lcd.setCursor(0,1);
lcd.print(sat_off);
lcd.print(":");
lcd.print(minuta_off);
lcd.print(":");
if (sekunda_off<10){
lcd.print("0");
lcd.print(sekunda_off);
}
else
{
lcd.print(sekunda_off);
}
}
if (razlika_web>600000){ //osvježavanje vremena s web-a
web(); // nakon 10 minuta
pocetak_web=millis();
}
}
void web (){
Serial.println("Web dohvat vremena");
if ( (WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
String url = "http://tehnooz.hr/vrijeme.php";
Serial.println(url);
if (http.begin(client,url )) {
int httpCode = http.GET();
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String primljeno = http.getString();
rijec=primljeno.substring(primljeno.indexOf("sat")+6,primljeno.indexOf("minuta")-3);
sat=rijec.toInt();
rijec=primljeno.substring(primljeno.indexOf("minuta")+9,primljeno.indexOf("sekunda")-3);
minuta=rijec.toInt();
rijec=primljeno.substring(primljeno.indexOf("sekunda")+10,primljeno.indexOf("end")-3);
sekunda=rijec.toInt();
pocetak_sat_web=millis();
Serial.println("WEB REFRESH OK");
}
primljeno="";
Serial.println();
}
} else {
Serial.print("Greška u prijemu");
}
http.end();
} else {
Serial.printf("Nemoguće spajanje na WEB");
}
}
Kako bi uspješno koristili LCD display koji je spojen preko I2C sučelja morate koristiti sljedeću biblioteku.