#include #ifdef __AVR__ #include #endif #define PIN 2 // Hier wird angegeben, an welchem digitalen Pin die WS2812 LEDs bzw. NeoPixel angeschlossen sind #define NUM_LEDS 36 // Hier wird die Anzahl der angeschlossenen WS2812 LEDs bzw. NeoPixel angegeben #define BRIGHTNESS 10 // Hier wird die Helligkeit aller LEDs eingegeben Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800); #include "Wire.h" #define DS3231_ADDRESSE 0x68 // SCL an analoger Eingang A5 - SDA an analoger Eingang A4 int merker1=100; int merker2=100; int merker3=100; int merker4=100; int merker5=200; int tasterminute=3; // Digital IO 3 für den Taster Minute int tasterstatusm = 0; int tasterstunde=4; // Didital IO 4 für den Taster Stunde int tasterstatush = 0; int sek1=0; int sek2=0; int sek3=0; int sek4=255; // Farbe sekunde int stu51=255; int stu52=0; int stu53=0; int stu54=0; // Farbe 5er Stunde int stu11=255; int stu12=0; int stu13=0; int stu14=0; // Farbe 1er Stunde int min51=0; int min52=0; int min53=0; int min54=255; // Farbe 5er Minute int min55=255; int min56=0; int min57=0; int min58=0; // Farbe 15er Minute int min11=0; int min12=0; int min13=0; int min14=255; // Farbe 1er Minute void setup() { strip.setBrightness(BRIGHTNESS); strip.begin(); strip.show(); // Initialize all strip to 'off' Serial.begin(9600); Wire.begin(); pinMode(tasterminute, INPUT); pinMode(tasterstunde, INPUT); } void loop() { BerlinUhr(); } void leseDS3231zeit(byte *sekunde, byte *minute,byte *stunde, byte *wochentag, byte *tag, byte *monat, byte *jahr) { Wire.beginTransmission(DS3231_ADDRESSE); Wire.write(0); // DS3231 Register zu 00h Wire.endTransmission(); Wire.requestFrom(DS3231_ADDRESSE, 7); *sekunde = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *stunde = bcdToDec(Wire.read() & 0x3f); *wochentag = bcdToDec(Wire.read()); *tag = bcdToDec(Wire.read()); *monat = bcdToDec(Wire.read()); *jahr = bcdToDec(Wire.read()); } void BerlinUhr(){ byte sekunde, minute, stunde, wochentag, tag, monat, jahr; leseDS3231zeit(&sekunde, &minute, &stunde, &wochentag, &tag, &monat, &jahr); // sekunde=0; // minute=59; // stunde=23; if (sekunde %2 == 0) { strip.setPixelColor(35, strip.Color(sek1,sek2,sek3, sek4)); strip.show(); } else { strip.setPixelColor(35, strip.Color(0,0,0)); strip.show(); } if (minute != merker1) { Serial.println(minute); if ((minute == 1) || (minute== 6) || (minute== 11) || (minute== 16) || (minute== 21) || (minute== 26) || (minute== 31) || (minute== 36) || (minute== 41) || (minute== 46) || (minute== 51) || (minute== 56)) { strip.setPixelColor(0, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(1, strip.Color(min11,min12,min13, min14)); strip.show(); } if ((minute == 2) || (minute== 7) || (minute== 12) || (minute== 17) || (minute== 22) || (minute== 27) || (minute== 32) || (minute== 37) || (minute== 42) || (minute== 47) || (minute== 52) || (minute== 57)) { strip.setPixelColor(0, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(1, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(2, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(3, strip.Color(min11,min12,min13, min14)); strip.show(); } if ((minute == 3) || (minute== 8) || (minute== 13) || (minute== 18) || (minute== 23) || (minute== 28) || (minute== 33) || (minute== 38) || (minute== 43) || (minute== 48) || (minute== 53) || (minute== 58)) { strip.setPixelColor(0, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(1, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(2, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(3, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(4, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(5, strip.Color(min11,min12,min13, min14)); strip.show(); } if ((minute == 4) || (minute== 9) || (minute== 14) || (minute== 19) || (minute== 24) || (minute== 29) || (minute== 34) || (minute== 39) || (minute== 44) || (minute== 49) || (minute== 54) || (minute== 59)) { strip.setPixelColor(0, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(1, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(2, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(3, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(4, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(5, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(6, strip.Color(min11,min12,min13, min14)); strip.setPixelColor(7, strip.Color(min11,min12,min13, min14)); strip.show(); } if ((minute == 0) || (minute== 5)|| (minute== 10) || (minute== 15) || (minute== 20) || (minute== 25) || (minute== 30) || (minute== 35) || (minute== 40) || (minute== 45) || (minute== 50) || (minute== 55)) { strip.setPixelColor(0, strip.Color(0,0,0)); strip.setPixelColor(1, strip.Color(0,0,0)); strip.setPixelColor(2, strip.Color(0,0,0)); strip.setPixelColor(3, strip.Color(0,0,0)); strip.setPixelColor(4, strip.Color(0,0,0)); strip.setPixelColor(5, strip.Color(0,0,0)); strip.setPixelColor(6, strip.Color(0,0,0)); strip.setPixelColor(7, strip.Color(0,0,0)); strip.show(); } merker1 = minute; } if (minute != merker2) { if ((minute >=5) and (minute <=9)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=10) and (minute <=14)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=15) and (minute <=19)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.show(); } if ((minute >=20) and (minute <=24)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=25) and (minute <=29)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=30) and (minute <=34)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.show(); } if ((minute >=35) and (minute <=39)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(14, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=40) and (minute <=44)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(14, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(15, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=45) and (minute <=49)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(14, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(15, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(16, strip.Color(min55,min56,min57, min58)); strip.show(); } if ((minute >=50) and (minute <=54)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(14, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(15, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(16, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(17, strip.Color(min51,min52,min53, min54)); strip.show(); } if ((minute >=55) and (minute <=59)) { strip.setPixelColor(8, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(9, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(10, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(11, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(12, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(13, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(14, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(15, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(16, strip.Color(min55,min56,min57, min58)); strip.setPixelColor(17, strip.Color(min51,min52,min53, min54)); strip.setPixelColor(18, strip.Color(min51,min52,min53, min54)); strip.show(); } if (minute ==0) { strip.setPixelColor(8, strip.Color(0,0,0)); strip.setPixelColor(9, strip.Color(0,0,0)); strip.setPixelColor(10, strip.Color(0,0,0)); strip.setPixelColor(11, strip.Color(0,0,0)); strip.setPixelColor(12, strip.Color(0,0,0)); strip.setPixelColor(13, strip.Color(0,0,0)); strip.setPixelColor(14, strip.Color(0,0,0)); strip.setPixelColor(15, strip.Color(0,0,0)); strip.setPixelColor(16, strip.Color(0,0,0)); strip.setPixelColor(17, strip.Color(0,0,0)); strip.setPixelColor(18, strip.Color(0,0,0)); strip.show(); } } if (stunde != merker3) { if ((stunde == 1) || (stunde == 6) || (stunde == 11) || (stunde == 16) || (stunde == 21)) { strip.setPixelColor(19, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(20, strip.Color(stu11,stu12,stu13, stu14)); strip.show(); } if ((stunde == 2) || (stunde == 7) || (stunde == 12) || (stunde == 17) || (stunde == 22)) { strip.setPixelColor(19, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(20, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(21, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(22, strip.Color(stu11,stu12,stu13, stu14)); strip.show(); } if ((stunde == 3) || (stunde == 8) || (stunde == 13) || (stunde == 18) || (stunde == 23)) { strip.setPixelColor(19, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(20, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(21, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(22, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(23, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(24, strip.Color(stu11,stu12,stu13, stu14)); strip.show(); } if ((stunde == 4) || (stunde == 9) || (stunde == 14) || (stunde == 19) || ((stunde == 0) and (minute ==0))) { strip.setPixelColor(19, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(20, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(21, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(22, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(23, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(24, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(25, strip.Color(stu11,stu12,stu13, stu14)); strip.setPixelColor(26, strip.Color(stu11,stu12,stu13, stu14)); strip.show(); } if (((stunde == 0) and (minute >=1)) || (stunde == 5) || (stunde == 10) || (stunde == 15) || (stunde == 20)) { strip.setPixelColor(19, strip.Color(0,0,0)); strip.setPixelColor(20, strip.Color(0,0,0)); strip.setPixelColor(21, strip.Color(0,0,0)); strip.setPixelColor(22, strip.Color(0,0,0)); strip.setPixelColor(23, strip.Color(0,0,0)); strip.setPixelColor(24, strip.Color(0,0,0)); strip.setPixelColor(25, strip.Color(0,0,0)); strip.setPixelColor(26, strip.Color(0,0,0)); strip.show(); } } if (stunde != merker4) { if ((stunde >=5) and (stunde <=9)) { strip.setPixelColor(27, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(28, strip.Color(stu51,stu52,stu53, stu54)); strip.show(); } if ((stunde >=10) and (stunde <=14)) { strip.setPixelColor(27, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(28, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(29, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(30, strip.Color(stu51,stu52,stu53, stu54)); strip.show(); } if ((stunde >=15) and (stunde <=19)) { strip.setPixelColor(27, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(28, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(29, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(30, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(31, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(32, strip.Color(stu51,stu52,stu53, stu54)); strip.show(); } if (((stunde >=20) and (stunde <=24)) or ((stunde ==0) and (minute ==0))) { strip.setPixelColor(27, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(28, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(29, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(30, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(31, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(32, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(33, strip.Color(stu51,stu52,stu53, stu54)); strip.setPixelColor(34, strip.Color(stu51,stu52,stu53, stu54)); strip.show(); } if ((stunde == 0) and (minute >=1)) { strip.setPixelColor(27, strip.Color(0,0,0)); strip.setPixelColor(28, strip.Color(0,0,0)); strip.setPixelColor(29, strip.Color(0,0,0)); strip.setPixelColor(30, strip.Color(0,0,0)); strip.setPixelColor(31, strip.Color(0,0,0)); strip.setPixelColor(32, strip.Color(0,0,0)); strip.setPixelColor(33, strip.Color(0,0,0)); strip.setPixelColor(34, strip.Color(0,0,0)); strip.show(); } } tasterstatusm=digitalRead(tasterminute); if (tasterstatusm == HIGH) { minute = minute + 1; sekunde = 1; if (minute == 60) minute = 0; Wire.beginTransmission(DS3231_ADDRESSE); Wire.write(0); Wire.write(decToBcd(sekunde)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(stunde)); Wire.write(decToBcd(wochentag)); Wire.write(decToBcd(tag)); Wire.write(decToBcd(monat)); Wire.write(decToBcd(jahr)); Wire.endTransmission(); delay (200); } tasterstatush=digitalRead(tasterstunde); if (tasterstatush == HIGH) { stunde = stunde + 1; if (stunde >= 24) stunde = 0; Wire.beginTransmission(DS3231_ADDRESSE); Wire.write(0); Wire.write(decToBcd(sekunde)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(stunde)); Wire.write(decToBcd(wochentag)); Wire.write(decToBcd(tag)); Wire.write(decToBcd(monat)); Wire.write(decToBcd(jahr)); Wire.endTransmission(); delay (200); } } byte decToBcd(byte val) { // Dezimal Zahl zu binary coded decimal (BCD) umwandeln return((val/10*16) + (val%10)); } byte bcdToDec(byte val) { // BCD (binary coded decimal) in Dezimal Zahl umwandeln return((val/16*10) + (val%16)); }