Sprawdź ten kod poniżej, same biblioteki nic nie dadzą, nie wiem jaki masz wyświetlacz, pod które piny podpięty przekaźnik, ale myślę, że to ogarniesz, u mnie pod 20x4 działało, jeśli masz 16x2, to tutaj:
Kod:
lcd.begin(20,4); //rozmiar wyświetlacza
musisz zmienić.
Polecam dołożyć klawiaturę i zrobić parametry czasu ( i nie tylko ) nastawne. Są tutaj tematy na forum które bardzo ładnie opisują jak taki sterownik ugryźć.
Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Time.h>
#include <DS1307RTC.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int wlacznik_1 = 2; // pin przekaźnika
// zmienne przechowujące aktualną godzinę i minutę
int godzina = 0;
int minuta = 0;
// odświeżanie daty na wyświetlaczu co sekundę
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
lcd.begin(20,4); //rozmiar wyświetlacza
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("WLACZNIK");
lcd.setCursor(2,1);
lcd.print("AUTOMATYCZNY");
pinMode(wlacznik_1, OUTPUT);
digitalWrite(wlacznik_1, HIGH);
}
void loop() {
czas(); // wyświetanie czasu
wlacznik(); // sterowanie włącznikiem
}
void czas() {
tmElements_t tm;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (RTC.read(tm)) {
lcd.setCursor(12,3);
print2digits(tm.Hour);
godzina = tm.Hour;
lcd.print(":");
print2digits(tm.Minute);
minuta = tm.Minute;
lcd.print(":");
print2digits(tm.Second);
lcd.setCursor(0,3);
lcd.print(tm.Day);
lcd.print("/");
lcd.print(tm.Month);
lcd.print("/");
lcd.print(tmYearToCalendar(tm.Year));
} else {
lcd.setCursor(15,3);
if (RTC.chipPresent()) {
lcd.print("0x0x0x0x");
} else {
lcd.print("error");
}
}
}
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
lcd.print('0');
}
lcd.print(number);
}
void wlacznik(){
// tutaj ustalamy sobie ramy czasowe tj. od 16:00 do 22:00
if (godzina >= 16 && minuta >= 00 && godzina < 22 && minuta < 00)
{
digitalWrite(wlacznik_1, LOW);
lcd.setCursor(0,2);
lcd.print("on ");
}
else {
digitalWrite(wlacznik_1, HIGH);
lcd.setCursor(0,2);
lcd.print("off");
}
}