Street Light Timer Controller

Introduction: Street Light Timer Controller

About: DIAMONDAHIR Gold medelist Hardware Project (MCPC jal). https://www.facebook.com/DIAMONDAHIR

REQUIREMENT

1.RELAY

2.ARDUINO PRO mini,or ARDUINO UNO

3.LCD DISPLAY 16x2

4.RTC REAL TIME CLOCK DS1307

5.12v ADAPTER

6. LM7805 5v regulator

7. FTDI232 FOR upload arduino file

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1:

MAKE 12v to 5v DC STEP DOWN

Step 2:

MAKE RELAY CIRCUIT AND DISPLAY CIRCUIT FOR ARDUINO

Step 3:

//CODE SET TIME SWITCH ACCORDING REQUIREMENT

#include "Wire.h"

#includeLiquidCrystal lcd(7,6, 5, 4, 3, 2); //lcd (rs, enable, d4, d5, d6, d7)

const char* AMPM; int bulb=0;

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

char* days[] = { "","Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

int H; String s, m, d, mth, h;

#define DS1307_I2C_ADDRESS 0x68

byte on[8] = { 0b01110, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b01010 };

byte off[8] = { 0b01110, 0b10001, 0b10001, 0b10001, 0b10001, 0b10001, 0b11111, 0b01010 };

byte spark[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b10101, 0b01010 };

void setup()

{

Wire.begin();

lcd.createChar(1, on); // ON bulb cracter

lcd.createChar(0, off); // OFF BULB CRATCTER

lcd.createChar(2, spark); // SPARK BULB

lcd.begin(16, 2);

lcd.print(" DIAMOND AHIR");

lcd.setCursor(0,1);

lcd.print(" X-PERT GROUP");

delay(3000);

Serial.begin(9600);

}

void loop()

{

getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // GET values

ampm();

Convert_Hours();

lcd.clear(); // clear display

displaytime(); // Display Time

match_bulb_time(); // MATCHING WITH SET BULB TIMEING

delay(1000); // Wait 1 second

}

byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) );}

void getDateDs1307(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year)

{

// Read values from RTC DS1307

Wire.beginTransmission(DS1307_I2C_ADDRESS);

Wire.write(0);

Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

*second = bcdToDec(Wire.read() & 0x7f);

*minute = bcdToDec(Wire.read());

*hour = bcdToDec(Wire.read() & 0x3f);

*dayOfWeek = bcdToDec(Wire.read());

*dayOfMonth = bcdToDec(Wire.read());

*month = bcdToDec(Wire.read());

*year = bcdToDec(Wire.read()); }

void ampm() { (hour > 11)?(AMPM="PM"):(AMPM="AM"); }

void Convert_Hours() { if(hour == 12||hour == 0) H=12; else if(hour > 12)H=hour%12; else H=hour; }

void displaytime()

{

if(minute == 0) // ON EVERY HOURS IT DISPLAY FOR ONE MINUTES

{

lcd.begin(16, 2);

lcd.print(" DIAMOND AHIR");

lcd.setCursor(0,1); (H < 10) ? ( h = "0" + String(H)) : ( h = String(H));

// APPLY ZERO + with 1to9 Hours

(minute < 10) ? ( m = "0" + String(minute) ) : ( m = String(minute) ); // APPLY ZERO + with 1to9 Minutes

(second < 10) ? ( s = "0" + String(second) ) : ( s = String(second) ); // APPLY ZERO + with 1to9 Second

lcd.print(" " + String(h) + ":"+ m +":"+ s + " " + AMPM );

}

else

{

lcd.begin(16, 2);

(H < 10) ? ( h = "0" + String(H)) : ( h = String(H)); // APPLY ZERO + with 1to9 Hours

(minute < 10) ? ( m = "0" + String(minute)) : ( m = String(minute) ); // APPLY ZERO + with 1to9 Minutes

(second < 10) ? ( s = "0" + String(second)) : ( s = String(second) ); // APPLY ZERO + with 1to9 Seconds

(dayOfMonth < 10) ? ( d = "0" + String(dayOfMonth)) : ( d = String(dayOfMonth)); // APPLY ZERO + with 1to9 Day

(month < 10) ? ( mth = "0" + String(month)) : ( mth = String(month)); // APPLY ZERO + with 1to9 Month

lcd.setCursor(0,0);

lcd.print( h + ":" + m + ":" + s + " " + AMPM); // HOURS : MINUTES : SECONDS AM/PM

lcd.setCursor(0,1);

lcd.print( d + ":" + mth + ":" + year + " " + days[dayOfWeek]); //DAY:MONTH:YEAR WEEK

}

}//END FUNCTION

void match_bulb_time()

{

switch (hour) // Apply bulb to On with Hours

{ // 6-AM to 6-PM To On Bulb

case 0: bulb=1; break; //12

case 1: bulb=1; break; //1

case 2: bulb=1; break; //2

case 3: bulb=1; break; //3

case 4: bulb=1; break; //4

case 5: bulb=1; break; //5

case 6: bulb=1; break; //6

case 7: bulb=0; break; //7

case 8: bulb=0; break; //8

case 9: bulb=0; break; //9

case 10: bulb=0; break; //10

case 11: bulb=0; break; //11

case 12: bulb=0; break; //12

case 13: bulb=0; break; //1

case 14: bulb=0; break; //2

case 15: bulb=0; break; //3

case 16: bulb=0; break; //4

case 17: bulb=0; break; //5

case 18: bulb=1; break; //6

case 19: bulb=1; break; //7

case 20: bulb=1; break; //8

case 21: bulb=1; break; //9

case 22: bulb=1; break; //10

case 23: bulb=1; break; //11

default: break;

}

if(bulb==1) //Relay switch

{ digitalWrite(8,LOW); // OR connect To ground

digitalWrite(9,HIGH); //ON RELAY

// Display BULB Icon On LCD

lcd.setCursor(14,0);

lcd.write((byte) 2);

lcd.write((byte) 2);

lcd.setCursor(14,1);

lcd.write((byte) 1);

lcd.write((byte) 1);

}

if(bulb==0)

{

digitalWrite(8,LOW); // Or Connect to ground

digitalWrite(9,LOW); //OFF RELAY

// Display BULB OFF Icon

lcd.setCursor(14,1);

lcd.write((byte) 0);

lcd.write((byte) 0);

}

}

Step 4:

NOW BLUB ON OFF ACCODING TO URS SET TIME

Tech Contest

Participated in the
Tech Contest

Make It Glow! Contest

Participated in the
Make It Glow! Contest

Be the First to Share

    Recommendations

    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge

    5 Discussions

    0
    Leslie Gozo
    Leslie Gozo

    3 years ago

    thanks to the help :-)

    0
    dcalado1
    dcalado1

    4 years ago

    Nice and very useful!! Thanks for sharing!

    0
    RenéP4
    RenéP4

    4 years ago

    Impossible d'accèder aux règlages de la date et de l'heure j'ai essayé plusieurs solutions mais sans résultat

    0
    Arvind Ahir
    Arvind Ahir

    Reply 4 years ago

    thanks. ?