Gatan light timer controller (3 / 4 steg)
Steg 3:
KODEN ANGER KOPPLINGSUR ENLIGT KRAV
#include "Wire.h"
#includeLiquidCrystal lcd (7,6, 5, 4, 3, 2); LCD (rs, aktivera, d4, d5, d6, d7)
CONST char * AMPM; int glödlampa = 0;
byte sekund, minut, timme, dayOfWeek, dayOfMonth, månad, år.
char * dagar [] = {"", "Sol", "Må", "TI", "On", "Tor", "fr", "lö"};
int H; Sträng s, m, d, mth, h;
#define DS1307_I2C_ADDRESS 0x68
byte på [8] = {0b01110, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b01010};
byte av [8] = {0b01110, 0b10001, 0b10001, 0b10001, 0b10001, 0b10001, 0b11111, 0b01010};
byte gnista [8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b10101, 0b01010};
void setup()
{
Wire.BEGIN();
lcd.createChar(1, on); PÅ lampa cracter
lcd.createChar(0, off); UTANFÖR LAMPA CRATCTER
lcd.createChar (2, gnista); SPARK LAMPA
LCD.BEGIN (16, 2);
LCD.Print ("DIAMOND AHIR");
lcd.setCursor(0,1);
LCD.Print ("X-PERT-gruppen");
Delay(3000);
Serial.BEGIN(9600);
}
void loop()
{
getDateDs1307 (& sekund, minut, timme, & dayOfWeek, & dayOfMonth, & månad, & år); Hämta värden
AMPM();
Convert_Hours();
LCD.Clear(); tydlig display
Displaytime(); Visa tid
match_bulb_time(); MATCHNING MED SET LAMPA TIMEING
Delay(1000); Vänta en sekund
}
byte bcdToDec(byte val) {return ((val/16 * 10) + (val % 16));}
void getDateDs1307 (byte * andra, byte * minut, byte * timme, byte * dayOfWeek, byte * dayOfMonth, byte * månad, byte * år)
{
Läs värden från RTC DS1307
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
* andra = bcdToDec(Wire.read() & 0x7f);
* minut = bcdToDec(Wire.read());
* timme = bcdToDec(Wire.read() & 0x3f);
* dayOfWeek = bcdToDec(Wire.read());
* dayOfMonth = bcdToDec(Wire.read());
* månad = bcdToDec(Wire.read());
* år = bcdToDec(Wire.read()); }
void ampm() {(timme > 11)? () AMPM="PM"):(AMPM="AM"); }
void Convert_Hours() {if(hour == 12|| timme == 0) H = 12; annars om (timme > 12) H = timme % 12. annat H = timme; }
void displaytime()
{
IF(Minute == 0) / / på varje timmar det visning för en minuter
{
LCD.BEGIN (16, 2);
LCD.Print ("DIAMOND AHIR");
lcd.setCursor(0,1); (H < 10)? (h = "0" + String(H)): (h = String(H));
TILLÄMPA noll + med 1to9 timmar
(minut < 10)? (m = "0" + String(minute)): (m = String(minute)); TILLÄMPA noll + med 1to9 minuter
(andra < 10)? (s = "0" + String(second)): (s = String(second)); TILLÄMPA noll + med 1to9 andra
LCD.Print ("" + String(h) + ":" + m + ":" + s + "" + AMPM);
}
annat
{
LCD.BEGIN (16, 2);
(H < 10)? (h = "0" + String(H)): (h = String(H)); TILLÄMPA noll + med 1to9 timmar
(minut < 10)? (m = "0" + String(minute)): (m = String(minute)); TILLÄMPA noll + med 1to9 minuter
(andra < 10)? (s = "0" + String(second)): (s = String(second)); TILLÄMPA noll + med 1to9 sekunder
(dayOfMonth < 10)? (d = "0" + String(dayOfMonth)): (d = String(dayOfMonth)); Använd noll + med 1to9 dag
(månad < 10)? (mth = "0" + String(month)): (mån = String(month)); TILLÄMPA noll + med 1to9 månad
lcd.setCursor(0,0);
LCD.Print (h + ":" + m + ":" + s + "" + AMPM); TIMMAR: MINUTER: SEKUNDER AM/PM
lcd.setCursor(0,1);
LCD.Print (d + ":" + mån + ":" + år + "" + days[dayOfWeek]); DAG: MÅNAD: ÅR VECKA
}
} //END FUNKTION
void match_bulb_time()
{
Switch (timme) / / gäller lampa till på med timmar
{/ / 6-AM till 6-PM till på Bulb
fall 0: glödlampa = 1; bryta; 12
fall 1: glödlampa = 1; bryta; 1
fall 2: glödlampa = 1; bryta; 2
fall 3: glödlampa = 1; bryta; 3
fall 4: glödlampa = 1; bryta; 4
fall 5: glödlampa = 1; bryta; 5
mål 6: glödlampa = 1; bryta; 6
fall 7: glödlampa = 0; bryta; 7
mål 8: glödlampa = 0; bryta; 8
mål 9: glödlampa = 0; bryta; 9
mål 10: glödlampa = 0; bryta; 10
mål 11: glödlampa = 0; bryta; 11
ärende 12: glödlampa = 0; bryta; 12
ärende 13: glödlampa = 0; bryta; 1
14 i mål: glödlampa = 0; bryta; 2
mål 15: glödlampa = 0; bryta; 3
fall 16: glödlampa = 0; bryta; 4
17 i mål: glödlampa = 0; bryta; 5
fall 18: glödlampa = 1; bryta; 6
19 i mål: glödlampa = 1; bryta; 7
mål 20: glödlampa = 1; bryta; 8
i mål 21: glödlampa = 1; bryta; 9
fall 22: glödlampa = 1; bryta; 10
i mål 23: glödlampa = 1; bryta; 11
standard: bryta;
}
IF(bulb==1) //Relay switch
{digitalWrite(8,LOW); / / eller ansluta till marken
digitalWrite(9,HIGH); PÅ RELAY
Visa lampa ikon på 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); Eller Anslut till marken
digitalWrite(9,LOW); AV STAFETT
Display lampa av ikonen
lcd.setCursor(14,1);
LCD.write((byte) 0);
LCD.write((byte) 0);
}
}