#include #include #include #include int i,k,j, Am1 = 13, // minutes 1 ... i think Bm1 = 11, Cm1 = 10, Dm1 = 12, Am10 = 9, // minutes 10 Bm10 = 8, Cm10 = 7 , Dm10 = 6, Ah1 = 5, // Hour 1 Bh1 = 4, Ch1 = 3, Dh1 = 2, Ah10 = 1, //Hour 10 Bh10 = 0, d,mo,y, h, m, s; bool DeziBin [60][4] = // mapping decimal from software for binary hardware output for 74141 driver { //DeziBin[ZahlDezi][zahlBin] //D,C,B,A {LOW,LOW,LOW,HIGH}, //1 // Here i meesed up, if you solder the numbers wright, reorder! {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW}, //2 {LOW,LOW,LOW,HIGH}, //1 {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW}, //2 {LOW,LOW,LOW,HIGH}, //1 {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW}, //2 {LOW,LOW,LOW,HIGH}, //1 {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW}, //2 {LOW,LOW,LOW,HIGH}, //1 {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW}, //2 {LOW,LOW,LOW,HIGH}, //1 {LOW,LOW,LOW,LOW}, //0 {HIGH,LOW,LOW,HIGH}, //9 {HIGH,LOW,LOW,LOW}, //8 {LOW,HIGH,HIGH,HIGH}, //7 {LOW,HIGH,HIGH,LOW}, //6 {LOW,HIGH,LOW,HIGH}, //5 {LOW,HIGH,LOW,LOW}, //4 {LOW,LOW,HIGH,HIGH}, //3 {LOW,LOW,HIGH,LOW} //2 // {HIGH,LOW,HIGH,LOW} //10 ?? }; void setup() { pinMode(Am1, OUTPUT); pinMode(Bm1, OUTPUT); pinMode(Cm1, OUTPUT); pinMode(Dm1, OUTPUT); pinMode(Am10, OUTPUT); pinMode(Bm10, OUTPUT); pinMode(Cm10, OUTPUT); pinMode(Dm10, OUTPUT); pinMode(Ah1, OUTPUT); pinMode(Bh1, OUTPUT); pinMode(Ch1, OUTPUT); pinMode(Dh1, OUTPUT); pinMode(Ah10, OUTPUT); pinMode(Bh10, OUTPUT); tubeCare(); digitalWrite(Ah10,HIGH); digitalWrite(Bh10,HIGH); delay(500); digitalWrite(Ah10,HIGH); digitalWrite(Bh10,LOW); delay(500); digitalWrite(Ah10,LOW); digitalWrite(Bh10,HIGH); delay(500); digitalWrite(Ah10,LOW); digitalWrite(Bh10,LOW); delay(500); Date2(); Date(); } void loop() //-----------------------Main { tmElements_t tm; Time(); Sec(); h=tm.Hour; m=tm.Minute; s=tm.Second; // Every 10 full minutessomething happens if(m==0&&s==10) Date(); // showing date if(m==10&&s==10)tubeCare(); // caring about tubes if(m==20&&s==10)Date(); if(m==30&&s==10)tubeCare(); if(m==40&&s==10)Date(); if(m==50&&s==10)tubeCare(); if(h==23&&m==59&&s==50)Date2(); if(h==13&&m==37&&s==0) { tubeCare(); Date(); tubeCare(); tubeCare(); } } void Time() //-----------------------Time { tmElements_t tm; if (RTC.read(tm)) { h=tm.Hour; s=tm.Second; if(i!=tm.Second) {m=tm.Second;i=tm.Second;j=4;} else{ m=tm.Minute; j=0; } //j--; //if(j<0)j=0; } digitalWrite(Dm1, DeziBin[m][0]); digitalWrite(Cm1, DeziBin[m][1]); digitalWrite(Bm1, DeziBin[m][2]); digitalWrite(Am1, DeziBin[m][3]); m=m/10; //(tm.Second!=s)m=s/10; digitalWrite(Dm10, DeziBin[m][0]); digitalWrite(Cm10, DeziBin[m][1]); digitalWrite(Bm10, DeziBin[m][2]); digitalWrite(Am10, DeziBin[m][3]); delay(j); h=tm.Hour; digitalWrite(Dh1, DeziBin[h][0]); digitalWrite(Ch1, DeziBin[h][1]); digitalWrite(Bh1, DeziBin[h][2]); digitalWrite(Ah1, DeziBin[h][3]); if(h<=9) { digitalWrite(Ah10,LOW); digitalWrite(Bh10,LOW); } if(h>=10) { digitalWrite(Ah10,LOW); digitalWrite(Bh10,HIGH); } if(h>19) { digitalWrite(Ah10,HIGH); digitalWrite(Bh10,LOW); } if(h>29) { digitalWrite(Ah10,HIGH); digitalWrite(Bh10,HIGH); } delay(14); } void Sec() //--------------Sec----ond { tmElements_t tm; m=tm.Second; digitalWrite(Dm1, DeziBin[m][0]); digitalWrite(Cm1, DeziBin[m][1]); digitalWrite(Bm1, DeziBin[m][2]); digitalWrite(Am1, DeziBin[m][3]); m=m/10; digitalWrite(Dm10, DeziBin[m][0]); digitalWrite(Cm10, DeziBin[m][1]); digitalWrite(Bm10, DeziBin[m][2]); digitalWrite(Am10, DeziBin[m][3]); delayMicroseconds(5); } void Date () //-----------------------Date-------------- { tmElements_t tm; // tm.Day; // tm.Month; // tm.Year; if (RTC.read(tm)) { mo=tm.Month; } digitalWrite(Dm1, DeziBin[mo][0]); digitalWrite(Cm1, DeziBin[mo][1]); digitalWrite(Bm1, DeziBin[mo][2]); digitalWrite(Am1, DeziBin[mo][3]); mo=mo/10; //(tm.Second!=s)m=s/10; digitalWrite(Dm10, DeziBin[mo][0]); digitalWrite(Cm10, DeziBin[mo][1]); digitalWrite(Bm10, DeziBin[mo][2]); digitalWrite(Am10, DeziBin[mo][3]); d=tm.Day; digitalWrite(Dh1, DeziBin[d][0]); digitalWrite(Ch1, DeziBin[d][1]); digitalWrite(Bh1, DeziBin[d][2]); digitalWrite(Ah1, DeziBin[d][3]); if(d<=9) { digitalWrite(Ah10,LOW); digitalWrite(Bh10,LOW); } if(d>=10) { digitalWrite(Ah10,LOW); digitalWrite(Bh10,HIGH); } if(d>19) { digitalWrite(Ah10,HIGH); digitalWrite(Bh10,LOW); } if(d>29) { digitalWrite(Ah10,HIGH); digitalWrite(Bh10,HIGH); } delay(2000); digitalWrite(Ah10,HIGH); digitalWrite(Bh10,LOW); digitalWrite(Dh1, DeziBin[0][0]); digitalWrite(Ch1, DeziBin[0][1]); digitalWrite(Bh1, DeziBin[0][2]); digitalWrite(Ah1, DeziBin[0][3]); y=tm.Year; digitalWrite(Dm1, DeziBin[y][0]); digitalWrite(Cm1, DeziBin[y][1]); digitalWrite(Bm1, DeziBin[y][2]); digitalWrite(Am1, DeziBin[y][3]); y=tmYearToCalendar(tm.Year); digitalWrite(Dm10, DeziBin[y][0]); digitalWrite(Cm10, DeziBin[y][1]); digitalWrite(Bm10, DeziBin[y][2]); digitalWrite(Am10, DeziBin[y][3]); delay(2000); } void tubeCare() //----------------tubeCare() { k=0; while (k<120) { digitalWrite(Dm1, DeziBin[k][0]); digitalWrite(Cm1, DeziBin[k][1]); digitalWrite(Bm1, DeziBin[k][2]); digitalWrite(Am1, DeziBin[k][3]); digitalWrite(Dm10, DeziBin[k][0]); digitalWrite(Cm10, DeziBin[k][1]); digitalWrite(Bm10, DeziBin[k][2]); digitalWrite(Am10, DeziBin[k][3]); digitalWrite(Dh1, DeziBin[k][0]); digitalWrite(Ch1, DeziBin[k][1]); digitalWrite(Bh1, DeziBin[k][2]); digitalWrite(Ah1, DeziBin[k][3]); digitalWrite(Ah10, DeziBin[k][3]); digitalWrite(Bh10, DeziBin[k][2]); delay(10); k++; } } void Date2() { // 04.01.1984 ..whatever that could be. //delay(1000); digitalWrite(Dh1, DeziBin[4][0]); digitalWrite(Ch1, DeziBin[4][1]); digitalWrite(Bh1, DeziBin[4][2]); digitalWrite(Ah1, DeziBin[4][3]); digitalWrite(Ah10, DeziBin[1][2]); digitalWrite(Bh10, DeziBin[1][3]); digitalWrite(Dm1, DeziBin[1][0]); digitalWrite(Cm1, DeziBin[1][1]); digitalWrite(Bm1, DeziBin[1][2]); digitalWrite(Am1, DeziBin[1][3]); digitalWrite(Dm10, DeziBin[0][0]); digitalWrite(Cm10, DeziBin[0][1]); digitalWrite(Bm10, DeziBin[0][2]); digitalWrite(Am10, DeziBin[0][3]); delay(2000); digitalWrite(Dh1, DeziBin[9][0]); digitalWrite(Ch1, DeziBin[9][1]); digitalWrite(Bh1, DeziBin[9][2]); digitalWrite(Ah1, DeziBin[9][3]); digitalWrite(Ah10, LOW); digitalWrite(Bh10, HIGH); digitalWrite(Dm1, DeziBin[4][0]); digitalWrite(Cm1, DeziBin[4][1]); digitalWrite(Bm1, DeziBin[4][2]); digitalWrite(Am1, DeziBin[4][3]); digitalWrite(Dm10, DeziBin[8][0]); digitalWrite(Cm10, DeziBin[8][1]); digitalWrite(Bm10, DeziBin[8][2]); digitalWrite(Am10, DeziBin[8][3]); delay(2000); }