#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
//Setup Pin (m=merah, k=kuning, h=hijau | b=barat, t=timur, us=utara/selatan)
int mb = 2;
int kb = 3;
int hb = 4;
int mt = 5;
int kt = 6;
int ht = 7;
int mus = 8;
int kus = 9;
int hus = 10;
void setup ()
{
pinMode(mb, OUTPUT); //Merah (Barat)
pinMode(kb, OUTPUT); //Kuning
pinMode(hb, OUTPUT); //Hijau
pinMode(mt, OUTPUT); //Merah (Timur)
pinMode(kt, OUTPUT); //Kuning
pinMode(ht, OUTPUT); //Hijau
pinMode(mus, OUTPUT); //Merah (Utara/Selatan)
pinMode(kus, OUTPUT); //Kuning
pinMode(hus, OUTPUT); //Hijau
Serial.begin(9600);
if (! rtc.begin())
{
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning())
{
Serial.println("RTC is NOT running!");
}
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //auto update from computer time
//rtc.adjust(DateTime(2022, 11, 21, 22, 0, 0)); // to set the time manually
}
void loop()
{
DateTime now = rtc.now();
int set = now.hour();
if (set >= 5 & set < 22){
if (set >= 6 & set < 9){ //Jam Sibuk (6-9)
//Pengaturan Durasi
int dhus = 40000; //Durasi U/S Hijau
int dkus = 3000; //Durasi U/S Kuning
int dlyb = 3000; //Delay Sebelum Barat Hijau
int dhb = 45000; //Durasi B Hijau
int dkb = 3000; //Durasi B Kuning
int dlyt = 3000; //Delay Sebelum Timur Hijau
int dht = 20000; //Durasi T Hijau
int dkt = 3000; //Durasi T Kuning
int dlyus = 3000; //Delay Sebelum Selatan/Utara Hijau
digitalWrite(mus, LOW); //Utara/Selatan
digitalWrite(kus, LOW);
digitalWrite(hus, HIGH);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
digitalWrite(hb, LOW);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
digitalWrite(ht, LOW);
delay(dhus);
digitalWrite(kus, HIGH); //Utara/Selatan
digitalWrite(hus, LOW);
delay(dkus);
digitalWrite(mus, HIGH); //Utara/Selatan
digitalWrite(kus, LOW);
delay(dlyb);
digitalWrite(mb, LOW); //Barat
digitalWrite(hb, HIGH);
delay(dhb);
digitalWrite(kb, HIGH); //Barat
digitalWrite(hb, LOW);
delay(dkb);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
delay(dlyt);
digitalWrite(mt, LOW); //Timur
digitalWrite(ht, HIGH);
delay(dht);
digitalWrite(kt, HIGH); //Timur
digitalWrite(ht, LOW);
delay(dkt);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
delay(dlyus); //Delay Sebelum Selatan/Utara Hijau
}
else if (set >= 15 & set < 18){ //Jam Sibuk (15-18)
//Pengaturan Durasi
int dhus = 40000; //Durasi U/S Hijau
int dkus = 3000; //Durasi U/S Kuning
int dlyb = 3000; //Delay Sebelum Barat Hijau
int dhb = 45000; //Durasi B Hijau
int dkb = 3000; //Durasi B Kuning
int dlyt = 3000; //Delay Sebelum Timur Hijau
int dht = 20000; //Durasi T Hijau
int dkt = 3000; //Durasi T Kuning
int dlyus = 3000; //Delay Sebelum Selatan/Utara Hijau
digitalWrite(mus, LOW); //Utara/Selatan
digitalWrite(kus, LOW);
digitalWrite(hus, HIGH);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
digitalWrite(hb, LOW);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
digitalWrite(ht, LOW);
delay(dhus);
digitalWrite(kus, HIGH); //Utara/Selatan
digitalWrite(hus, LOW);
delay(dkus);
digitalWrite(mus, HIGH); //Utara/Selatan
digitalWrite(kus, LOW);
delay(dlyb);
digitalWrite(mb, LOW); //Barat
digitalWrite(hb, HIGH);
delay(dhb);
digitalWrite(kb, HIGH); //Barat
digitalWrite(hb, LOW);
delay(dkb);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
delay(dlyt);
digitalWrite(mt, LOW); //Timur
digitalWrite(ht, HIGH);
delay(dht);
digitalWrite(kt, HIGH); //Timur
digitalWrite(ht, LOW);
delay(dkt);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
delay(dlyus); //Delay Sebelum Selatan/Utara Hijau
}
else{ //Jam Normal
//Pengaturan Durasi
int dhus = 40000; //Durasi U/S Hijau
int dkus = 3000; //Durasi U/S Kuning
int dlyb = 3000; //Delay Sebelum Barat Hijau
int dhb = 45000; //Durasi B Hijau
int dkb = 3000; //Durasi B Kuning
int dlyt = 3000; //Delay Sebelum Timur Hijau
int dht = 20000; //Durasi T Hijau
int dkt = 3000; //Durasi T Kuning
int dlyus = 3000; //Delay Sebelum Selatan/Utara Hijau
digitalWrite(mus, LOW); //Utara/Selatan
digitalWrite(kus, LOW);
digitalWrite(hus, HIGH);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
digitalWrite(hb, LOW);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
digitalWrite(ht, LOW);
delay(dhus);
digitalWrite(kus, HIGH); //Utara/Selatan
digitalWrite(hus, LOW);
delay(dkus);
digitalWrite(mus, HIGH); //Utara/Selatan
digitalWrite(kus, LOW);
delay(dlyb);
digitalWrite(mb, LOW); //Barat
digitalWrite(hb, HIGH);
delay(dhb);
digitalWrite(kb, HIGH); //Barat
digitalWrite(hb, LOW);
delay(dkb);
digitalWrite(mb, HIGH); //Barat
digitalWrite(kb, LOW);
delay(dlyt);
digitalWrite(mt, LOW); //Timur
digitalWrite(ht, HIGH);
delay(dht);
digitalWrite(kt, HIGH); //Timur
digitalWrite(ht, LOW);
delay(dkt);
digitalWrite(mt, HIGH); //Timur
digitalWrite(kt, LOW);
delay(dlyus); //Delay Sebelum Selatan/Utara Hijau
}
}
else{ //Hemat Daya
int dkhd = 1000; //Durasi Kuning Hemat Daya
digitalWrite(kb, HIGH);
digitalWrite(kt, HIGH);
digitalWrite(kus, LOW);
delay(dkhd);
digitalWrite(kb, LOW);
digitalWrite(kt, LOW);
digitalWrite(kus, HIGH);
delay(dkhd);
}
Serial.println("Loop");
}