Listing Program Arduino
Listing Program Arduino
void setup()
{
}
now = RTC.now();// ambil nilai waktu sekarang
pinMode(Red1,OUTPUT);
pinMode(Yellow1,OUTPUT);
pinMode(Green1,OUTPUT);
pinMode(Red2,OUTPUT);
pinMode(Yellow2,OUTPUT);
pinMode(Green2,OUTPUT);
pinMode(Red3,OUTPUT);
pinMode(Yellow3,OUTPUT);
pinMode(Green3,OUTPUT);
pinMode(Red4,OUTPUT);
pinMode(Yellow4,OUTPUT);
pinMode(Green4,OUTPUT);
void loop() {
if (mySerial.available()>0)
{
char inChar= (char)mySerial.read();
if(inChar != '*')
{
InData += (String)inChar;
}else{
InData.trim();
// Cek Terima Data - Mode //
if(InData== "auto")
{
isAuto = true;
}else if(InData == "manual")
{
isAuto = false;
OffAll();
cmd = 0;
}else if(InData == "sync")
{
// Syncronisasi data ke smartphone //
KirimData();
}else if(InData == "save")
{
// save data ke eeprom //
WriteData();
thefirst = false;
}
// Cek Terima Data - Mode Manual //
if(isAuto == false)
{
if(InData == "1R1")
{
digitalWrite(Red1,1);
}else if(InData == "1R0")
{
digitalWrite(Red1,0);
}else if(InData == "2R1")
{
digitalWrite(Red2,1);
}else if(InData == "2R0")
{
digitalWrite(Red2,0);
}else if(InData == "3R1")
{
digitalWrite(Red3,1);
}else if(InData == "3R0")
{
digitalWrite(Red3,0);
}else if(InData == "4R1")
{
digitalWrite(Red4,1);
}else if(InData == "4R0")
{
digitalWrite(Red4,0);
}else if(InData == "1Y1")
{
digitalWrite(Yellow1,1);
}else if(InData == "1Y0")
{
digitalWrite(Yellow1,0);
}else if(InData == "2Y1")
{
digitalWrite(Yellow2,1);
}else if(InData == "2Y0")
{
digitalWrite(Yellow2,0);
}else if(InData == "3Y1")
{
digitalWrite(Yellow3,1);
}else if(InData == "3Y0")
{
digitalWrite(Yellow3,0);
}else if(InData == "4Y1")
{
digitalWrite(Yellow4,1);
}else if(InData == "4Y0")
{
digitalWrite(Yellow4,0);
}else if(InData == "1G1")
{
digitalWrite(Green1,1);
}else if(InData == "1G0")
{
digitalWrite(Green1,0);
}else if(InData == "2G1")
{
digitalWrite(Green2,1);
}else if(InData == "2G0")
{
digitalWrite(Green2,0);
}else if(InData == "3G1")
{
digitalWrite(Green3,1);
}else if(InData == "3G0")
{
digitalWrite(Green3,0);
}else if(InData == "4G1")
{
digitalWrite(Green4,1);
}else if(InData == "4G0")
{
digitalWrite(Green4,0);
}
}
// Cek Terima Data - Schedule Waktu //
//---------- Data Jam -------------- //
if(InData.substring(0,2)== "j1")
{
tmp_i = InData.substring(2).toInt();
j_jam[0] = (byte)tmp_i;
}else if(InData.substring(0,2)== "j2")
{
tmp_i = InData.substring(2).toInt();
j_jam[1] = (byte)tmp_i;
}else if(InData.substring(0,2)== "j3")
{
tmp_i = InData.substring(2).toInt();
j_jam[2] = (byte)tmp_i;
}else if(InData.substring(0,2)== "j4")
{
tmp_i = InData.substring(2).toInt();
j_jam[3] = (byte)tmp_i;
}else if(InData.substring(0,2)== "j5")
{
tmp_i = InData.substring(2).toInt();
j_jam[4] = (byte)tmp_i;
}
InData = "";
}
}
switch(cmd)
{
case 0:
cmd = 5;
break;
case 5:
// Mode Auto - Traffic Light //
OffAll();
digitalWrite(Green1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 10;
break;
case 10:
if(millis() >= timer + wait)
{
OffAll();
digitalWrite(Yellow1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 12;
}
break;
case 12:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Yellow2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 15;
}
break;
case 15:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Green2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 20;
}
break;
case 20:
if(millis() >= timer + wait)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Yellow2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 22;
}
break;
case 22:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Yellow3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 25;
}
break;
case 25:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Green3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 30;
}
break;
case 30:
if(millis() >= timer + wait)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Yellow3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 32;
}
break;
case 32:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Yellow4,1);
timer = millis();
cmd = 35;
}
break;
case 35:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Green4,1);
timer = millis();
cmd = 40;
}
break;
case 40:
if(millis() >= timer + wait)
{
OffAll();
digitalWrite(Red1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Yellow4,1);
timer = millis();
cmd = 42;
}
break;
case 42:
if(millis() >= timer + waitY)
{
OffAll();
digitalWrite(Yellow1,1);
digitalWrite(Red2,1);
digitalWrite(Red3,1);
digitalWrite(Red4,1);
timer = millis();
cmd = 45;
}
break;
case 45:
if(millis() >= timer + waitY)
{
cmd = 5;
}
break;
}
}
//-------------- FUNCTION -------------//
// default jumlah jadwal : 5 (07:00, 12:00 , 17:00, 00:00 , 03:00 )
//
// Config Data :
// 1 - 2 : jadwal waktu (jam-menit)
// 3 : delay traffic (detik)
void ReadData()
{
byte def_jam[5],def_menit[5];
byte def_delay[5];
void WriteData()
{
Serial.println("========== WRITE MEMORY =============");
for(int i =0; i<5; i++)
{
int addr = i * 3;
EEPROM.write(addr,j_jam[i]);
EEPROM.write(addr+1,j_menit[i]);
EEPROM.write(addr+2,t_detik[i]);
void KirimData()
{
for(int i=0; i<5; i++)
{
mySerial.println("j"+ (String)(i+1) + (String)j_jam[i]);
mySerial.println("m"+ (String)(i+1) + (String)j_menit[i]);
mySerial.println("d"+ (String)(i+1) + (String)t_detik[i]);
}
}
void ClearData()
{
for(int i=0; i<255; i++)
EEPROM.write(i,255);
}
void GetTime()
{
now = RTC.now(); // ambil nilai waktu sekarang
jam = (String)now.hour(); // ambil data jam
menit = (String)now.minute();// ambil data menit
detik = (String)now.second();// ambil data detik
if(i == 4)
{
tmax = (j_jam[0] * 60) + j_menit[0];
}else{
tmax = (j_jam[i+1] * 60) + j_menit[i+1];
}
thefirst = true;
if(tnow >= tmin && tnow < tmax)
{
wait = t_detik[i]*1000;
}
Serial.println("tnow : " + (String) tnow + " tmin:" + (String) tmin + " tmax:" + (String)
tmax + "delay :" + (String) wait);
}
}
}
void OffAll()
{
for(int i=2; i<=9; i++)
digitalWrite(i,LOW);
digitalWrite(12,LOW);
digitalWrite(Red4,LOW);
digitalWrite(Yellow4,LOW);
digitalWrite(Green4,LOW);
}