19-01-2017, 01:29
Kod PHP:
#include <Time.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS1302RTC.h>
DS1302RTC RTC(27, 29, 31);
#define DS1302_GND_PIN 33
#define DS1302_VCC_PIN 35
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);
void setup() {
lcd.begin(20, 4);
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
digitalWrite(DS1302_GND_PIN, LOW);
pinMode(DS1302_GND_PIN, OUTPUT);
digitalWrite(DS1302_VCC_PIN, HIGH);
pinMode(DS1302_VCC_PIN, OUTPUT);
lcd.print("RTC activated");
delay(500);
lcd.clear();
if (RTC.haltRTC())
lcd.print("Clock stopped!");
else
lcd.print("Clock working.");
lcd.setCursor(0,1);
if (RTC.writeEN())
lcd.print("Write allowed.");
else
lcd.print("Write protected.");
delay ( 2000 );
lcd.clear();
lcd.print("RTC Sync");
setSyncProvider(RTC.get);
if(timeStatus() == timeSet)
lcd.print(" Ok!");
else
lcd.print(" FAIL!");
delay ( 2000 );
lcd.clear();
}
void loop()
{
static int sday = 0;
lcd.setCursor(3, 0);
print2digits(hour());
lcd.print(" ");
print2digits(minute());
lcd.print(" ");
print2digits(second());
// Update in 00:00:00 hour only
if(sday != day()) {
lcd.setCursor(0, 1);
lcd.print(dayShortStr(weekday()));
lcd.setCursor(5, 1);
lcd.print(" ");
print2digits(day());
lcd.print("/");
print2digits(month());
lcd.print("/");
lcd.print(year());
}
if(timeStatus() != timeSet) {
lcd.setCursor(0, 1);
lcd.print(F("RTC ERROR: SYNC!"));
}
sday = day();
delay (100);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
lcd.write('_');
}
lcd.print(number);
}