// ============================================================================================================================= /* This Arduino code controls the ATMEGA328 chip on the PCB board that controls the 168 NeoPixels LED of the Word Clock Attached to this PCB are - RCT DS3231 ZS-042 clock module - DCF77 module DCF-2 The DCF77 module can be attached to adjust the time to the second with German longwave time signal received by the module Title ..: Jan's NeoPixel clock with Rainbow effect Author .: Jan Changes.: version 1.2 Added RCWL-0516 Radar Microwave Motion Sensor ( search for RADAR ) version 1.3 Added an LDR for the brightness control of the neopixels. version 1.4 Added a mosfet to switch the power supply of the neopixels on and off. version 1.5 Added Smiley. version 1.6 Code update. version 1.7 Choice smiley on/off collor rainbow/fix enz. 14-apr-19 version 2.0 With simple remote control, code optimized due to run out memory. handmatig in te stellen in de code, maar kan ook via afstandsbediening als deze aanwezig is can be set manually in the code, but can also be done via remote control if it is present DCF77OnOff 0 als geen DCF77 en 1 als wel een DCF77 module aanwezig is. 0 if no DCF77 and 1 if a DCF77 module is present. SecKnip seconde wel = 1 of niet = 0 laten knipperen second flashing = 1 or not = 0 ClockColor 0 = rainbow en 1 = vaste kleur van de NeoPixels 0 = rainbow and 1 = fix color of the NeoPixels RainbowSpec 255 = maximaal en 0 = minimaal aantal kleuren in rainbow spectrum 255 = maximum and 0 = minimum number of colors in the rainbow spectrum Maak je eigen vaste kleur met onderstaande drie parameters bv voor elk dezelfde waarde geeft wit als kleur Make your own fixed color with the following three parameters eg for each the same value gives white as color FixColorRed value for red FixColorGreen value for green FixColorBlue value for blue SmileyOnOff 0 = smiley off 1 = smiley on SmileycountSet na hoeveel bewegingen de smiley op komt after how many movements the smiley comes up Brightness_Offset brightness setting */ // =============================================================================================================================== //--------------------------------------------- // ARDUINO Includes defines and initialysations //--------------------------------------------- #include #include #include #include #include "DCF77.h" //#include "Time.h" #include #include //-------------------------------------------- // Define your own buttons here //-------------------------------------------- // /* // simple remote control #define button_r 0xFFC23D // button > => + 1 #define button_fw 0xFF629D // button /\ => + 10 #define button_l 0xFF22DD // button < => - 1 #define button_rv 0xFFA857 // button \/ => - 10 #define button_ok 0xFF02FD // button 1 => ok #define button_1 0xFF6897 // button 1 => fix or rainbow collor #define button_2 0xFF9867 // button 2 => second blink on or off #define button_3 0xFFB04F // button 3 => smiley on or off #define button_4 0xFF30CF // button 4 =>whether or not a DCF77 receiver #define button_5 0xFF18E7 // button 5 => smiley counter setting #define button_6 0xFF7A85 // button 6 => rainbow specectrum setting #define button_7 0xFF10EF // button 7 => fix collor value for red #define button_8 0xFF38C7 // button 8 => fix collor value for green #define button_9 0xFF5AA5 // button 9 => fix collor value for blue #define button_0 0xFF4AB5 // button 0 => set hours and minutes with no DCF (date is fixed May 20, 19) #define button_11 0xFF629D // button 11 => is equal to the / \ button because there are no more keys #define herhaal_c 0xFFFFFFFF // no button but repeat code // */ /* // SAMSUNG code #define button_r 0x898943BC // button > => + 1 #define button_fw 0x898941BE // button /\ => + 10 #define button_l 0x898944BB // button < => - 1 #define button_rv 0x898942BD // button \/ => - 10 #define button_ok 0x898940BF // button 1 => ok #define button_1 0x898951AE // button 1 => fix or rainbow collor #define button_2 0x898952AD // button 2 => seconde knipper on cq off #define button_3 0x898953AC // button 3 => smiley on cq off #define button_4 0x898954AB // button 4 => wel of geen DCF77 ontvanger #define button_5 0x898955AA // button 5 => smiley counter setting #define button_6 0x898956A9 // button 6 => rainbow specectrum setting #define button_7 0x898957A8 // button 7 => fix collor value for red #define button_8 0x898958A7 // button 8 => fix collor value for green #define button_9 0x898959A6 // button 9 => fix collor value for blue #define button_0 0x898950AF // button 0 => uren en minuten instellen bij geen DCF ( datum is vast 20-mei-19 ) #define button_11 0x898941BE // button 11 => kies een button is nu gelijk aan de /\ button #define herhaal_c 0xFFFFFFFF // geen buttom maar herhaal code */ //-------------------------------------------- // End define your own buttons //-------------------------------------------- //-------------------------------------------- // ARDUINO Definition //-------------------------------------------- #define DCF_PIN 2 // connection pin to DCF 77 device #define DCF77_Power_PIN 13 // connection pin to DCF 77 device #define RADAR_PIN 3 // RCWL-0516 Radar Microwave Motion Sensor #define MOSFET_PIN 4 // output pin to mosfet power for NeoPixels #define DCF_INTERRUPT 0 // interrupt number associated with pin 2 #define NEO_PIN 6 // which pin on the Arduino is connected to the NeoPixels? #define LDRpin A0 // pin where we connected the LDR and the resistor #define NUMPIXELS 168 // how many NeoPixels are attached to the Arduino? // When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, NEO_PIN, NEO_GRB + NEO_KHZ800); // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one. //-------------------------------------------- // DS3231 CLOCK MODULE //-------------------------------------------- DS3231 clock; RTCDateTime dt; RTC_DS3231 RTC; char time_s[9]; char date_s[11]; int receiver = 7; // Signal Pin of IR receiver to Arduino Digital Pin 7 /*-----( Declare objects )-----*/ IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' unsigned long lastCode; // stores last code received byte Led_Aan[168]; // between array uint32_t ColorBlue = pixels.Color(0, 0, 140); uint32_t ColorGreen = pixels.Color(0, 140, 0); uint32_t ColorRed = pixels.Color(140, 0, 0); uint32_t ColorWhite = pixels.Color(150, 150, 150); uint32_t ColorYellow = pixels.Color(110, 110, 0); uint32_t ColorBlack = pixels.Color(0, 0, 0); uint32_t ColorColor ; //uint32_t ColorColor = pixels.Color(25, 100, 175 ); // fix color for NeoPixels; time_t time; DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT); byte initFunk = 1; // FUNK display only on startup on byte ClockColor = 1; // 0 = fix and 1 = rainbow color of the NeoPixels byte TempClockColor = 0; // tijdelijke variabele byte RainbowSpec = 255; // 255 = maximum and 0 = minimum number of colors in the rainbow spectrum byte RainbowSpecPrev = 0; // previus rainbowspec waarde byte FixColorRed = 100; // make a fix collor value for red byte FixColorGreen = 100; // make a fix collor value for green byte FixColorBlue = 100; // make a fix collor value for blue //uint32_t FixColor = pixels.Color(FixColorRed, FixColorGreen, FixColorBlue); // collor of your choice int uren = 0; int minuten = 0; int DCFcheckuur = 04; // synchronize time with DCF77 time once a day at 04:10 int DCFcheckmin = 10; // in hours and minutes byte DCF77OnOff = 0; // 0 = Geen DCF77 1 = wel een DCF77 module aanwezig int newTimeSec ; // storage of new second int oldTimeSec ; // storage from previous second int Power_On_Counter = 0; // teller van aantal seconde after motion detection door RCWL-0516 module int Power_On_Time = 900; // uitschakelen na x seconde after motion detection door RCWL-0516 module (900 seconde is 15 minuten) byte RADAR_In = 1; // begin waarde is aan int LDRValue = 150; // result of reading the analog pin int BerLDRValue = 150; // berekende waarde byte xy = 0; // in berekening BrightnessControl byte Brightness_Offset = 30; // brightness setting byte Brightness_min = 15; // brightness minimum setting byte Brightness_max = 45; // brightness maximum setting byte knipper = 0 ; // seconde bepalen byte SecKnip = 1 ; // seconde 0 = niet en 1 = wel laten knipperen byte j = 0; // byte d = 0; // byte k = 0; // loop across the LED array byte m = 0; // number of the led byte e = 0; // counter for number of LEDs that are on byte f = 0; // f = alternative LED number in the row of the number that is on instead of the number of LEDs 168 byte SmileycountSet = 10; // how mutch times of movement before smiley comes up byte SmileycountTel = 0; // number of movement before smiley comes up byte smil = 0; // counter only once per loop byte emo = 0; // emoticon figuur knipoog of tong byte SmileyOnOff = 1; // 0 = smiley off 1 = smiley on // Location we want the data to be put in EEPROM. byte eeAddress01 = 1; // ClockColor 0 = fix and 1 = rainbow color of the NeoPixels byte eeAddress02 = 2; // SecKnip seconde 0 = niet en 1 = wel laten knipperen byte eeAddress03 = 3; // SmileyOnOff 0 = smiley off 1 = smiley on byte eeAddress04 = 4; // DCF77OnOff byte eeAddress05 = 5; // SmileycountSet how mutch times of movement before smiley comes up byte eeAddress06 = 6; // Number of colors in the rainbow spectrum byte eeAddress07 = 7; // FixColorRed byte eeAddress08 = 8; // FixColorGreen byte eeAddress09 = 9; // FixColorBlue byte eeAddress11 = 11; // Helderheids instelling bool refresh = true; // nodig voor IR display update //-------------------------------- // *** begin void setup *** //-------------------------------- void setup() { Serial.begin(9600); // sets serial port for communication pinMode (RADAR_PIN, INPUT_PULLUP); //configure RADAR_PIN as an input and enable the internal pull-up resistor. pinMode (DCF77_Power_PIN, OUTPUT); //configure DCF77_PIN as an output. pinMode (MOSFET_PIN, OUTPUT); //configure MOSFET_PIN as an output and set the power to the NeoPixels on. digitalWrite(MOSFET_PIN, LOW); // turn the MOSFET on. // Setup the LED strip pixels.begin(); // This initializes the NeoPixel library. pixels.setBrightness(150); // Lower brightness // pixels.show(); // Initialize DS3231 // Serial.println("Initialize DS3231"); clock.begin(); delay(1000); // Set sketch compiling time // clock.setDateTime(__DATE__, __TIME__); // Deze regel zet de computertijd naar de DS3231, de tijd loop dan 6 sec achter // Na update nogmaals uitvoeren omdat anders bij openen van de seriele monitor de tijd weer wordt aangepast naar de laatst ingelezen tijd // Manual (YYYY, MM, DD, HH, II, SS // clock.setDateTime(2018, 01, 04, 17, 51, 15); // Tijd handmatig zetten naar de DS3231, plus 15 sec om juiste tijd te krijgen // eventueel nog plus 30 sec om in het midden van de minuut over te gaan naar volgende minuut // Enable 1 Hz puls // clock.enable32kHz(false); // disable 32kHz // clock.setOutput(DS3231_1HZ); // Select output as rate to 1Hz // clock.enableOutput(true); // Start 1 Hz puls // clock.enableOutput(false); // Start 1 Hz puls newTimeSec = dt.second ; //storage of new second oldTimeSec = dt.second ; //storage from previous second // Serial.println("IR Receiver Button Decode"); irrecv.enableIRIn(); // Start the receiver //-------------------------------------------------------------- // *** run this once to provide the EEPROM with data *** //-------------------------------------------------------------- /* EEPROM.put(eeAddress01, ClockColor); EEPROM.put(eeAddress02, SecKnip); EEPROM.put(eeAddress03, SmileyOnOff); EEPROM.put(eeAddress04, DCF77OnOff); EEPROM.put(eeAddress05, SmileycountSet); EEPROM.put(eeAddress06, RainbowSpec); EEPROM.put(eeAddress07, FixColorRed); EEPROM.put(eeAddress08, FixColorGreen); EEPROM.put(eeAddress09, FixColorBlue); EEPROM.put(eeAddress11, Brightness_Offset); */ //-------------------------------------------------------------- // *** end of one-time run to provide the EEPROM with data *** //-------------------------------------------------------------- // Serial.println("Read from EEPROM"); // EEPROM.get(eeAddress00, ?????????); EEPROM.get(eeAddress01, ClockColor); EEPROM.get(eeAddress02, SecKnip); EEPROM.get(eeAddress03, SmileyOnOff); EEPROM.get(eeAddress04, DCF77OnOff); EEPROM.get(eeAddress05, SmileycountSet); EEPROM.get(eeAddress06, RainbowSpec); EEPROM.get(eeAddress07, FixColorRed); EEPROM.get(eeAddress08, FixColorGreen); EEPROM.get(eeAddress09, FixColorBlue); EEPROM.get(eeAddress11, Brightness_Offset); ColorColor = pixels.Color(FixColorRed, FixColorGreen, FixColorBlue ); // fix color for NeoPixels // Call DCF77 routine if (DCF77OnOff > 0 ) { DCF77Check(); } // Call Smiley routine if (SmileyOnOff > 0 ) { zetSmiley(); emo = 3; zetSmiley(); emo = 0; } else { theaterChaseRainbow(100); } } //-------------------------------------------- // *** einde void setup *** //-------------------------------------------- // Serial.print("xxxxx = "); // Serial.println(yyyyy, DEC); //-------------------------------------------- // *** begin void loop *** //-------------------------------------------- void loop() { /* //--------------------------------------------------------------- // *** use this piece of code to find out the IR codes *** //--------------------------------------------------------------- zeroleds(); zetmVijf(); zetuTwaalf(); Led_Aan[53] = 1, Led_Aan[90] = 1, Led_Aan[122] = 1 ; e = 13 ; NeoPixelsOnOff(); // call NeoPixels On Off Serial.println(" read IR codes "); while(1) { if (irrecv.decode(&results)) { k++; Serial.print(k); Serial.print(" "); Serial.println(results.value, HEX); Serial.println(" "); irrecv.resume(); delay(500); } } //--------------------------------------------------------------- // *** end of code to find out the IR codes *** //--------------------------------------------------------------- */ waiting: // loop waiting // IR controlle if (irrecv.decode(&results)) { // have we received an IR signal? reciveIR(); // signaal ontvangen zeroleds(); // call zeroleds, tussen array vullen met nullen ledaanzeten(); // call ledaanzeten, welke leds moeten worden aangezet } // Radar in controlle RADAR_In = digitalRead(RADAR_PIN); if ( RADAR_In > 0 ) { Power_On_Counter = 0; // reset teller van aantal seconde after motion detection door RCWL-0516 module ***** digitalWrite(MOSFET_PIN, LOW); // turn the MOSFET on // Call Smiley routine smil = 1; if (SmileyOnOff > 0 && SmileycountTel > SmileycountSet ) { // voorwaarde om smiley op te laten komen zetSmiley(); // routine call } } else { if (smil > 0) { SmileycountTel = SmileycountTel + 1; } smil = 0; } // Power on controlle if (Power_On_Counter > Power_On_Time) { // tijd zonder beweging overschreden ***** pixels.setBrightness(0); // Lower brightness to zero digitalWrite(MOSFET_PIN, HIGH); // turn the MOSFET off delay(1000); // wait a little // Helderheids controlle BrightnessControl(); // Call BrightnessControl routine, helderheid wordt altijd berekend goto waiting; // waiting } pixels.setBrightness(BerLDRValue); // value is calculated brightness dt = clock.getDateTime(); // For leading zero look to DS3231_dateformat example /* Serial.print("De tijd is na get clock : "); Serial.print(dt.year); Serial.print("-"); // zonder line return Serial.print(dt.month); Serial.print("-"); Serial.print(dt.day); Serial.print(" "); Serial.print(dt.hour); Serial.print(":"); Serial.print(dt.minute); Serial.print(":"); Serial.print(dt.second); Serial.println(""); // met line return */ newTimeSec = dt.second ; if (newTimeSec == oldTimeSec) { // Geen actie voor klok als er geen nieuwe seconde is BrightnessControl(); // Call BrightnessControl routine f = 0; e = 0; // teller voor aantal leds dat aan is } // end if else { // nieuwe seconde zeroleds(); // call zeroleds, tussen array vullen met nullen ledaanzeten(); // call ledaanzeten, welke leds moeten worden aangezet NeoPixelsOnOff(); // call NeoPixels On Off oldTimeSec = newTimeSec; // oude tijd updaten met nieuwe seconde Power_On_Counter ++; // update on time = Power_On_Counter = Power_On_Counter + 1 } // end nieuwe seconde // synchronize once a day with DCF77 time if (DCF77OnOff > 0 && dt.hour == DCFcheckuur && dt.minute == DCFcheckmin) { DCF77Check(); // Call DCF77 routine } // end if } //-------------------------------------------- // *** einde void Loop *** //-------------------------------------------- //-------------------------------------------- // *** begin void zeroleds *** //-------------------------------------------- void zeroleds() { //alle leds uitzetten for (int k = 0; k < NUMPIXELS; k++) //tussen array vullen met nullen -> 0 tot 167 = 168 posities Led_Aan[k] = 0; //loop over het led array } //-------------------------------------------- // *** einde void zeroleds *** //-------------------------------------------- //-------------------------------------------------------------- // *** begin rainbow effect op de leds die aan zijn *** //-------------------------------------------------------------- void letterCycle(uint8_t wait) { if (ClockColor == 1 ) { // rainbow color if ( m != 154) { f = f + 1; // f j ++ ; // j = update vertraging if (j == 20) { j = 0; d ++ ; // d is een byte en gaat van 0 tot 255 rollover en dan weer 0 to 255 enz. } pixels.setPixelColor(m, Wheel(((f * RainbowSpec/ e) + d) & 255)); // m = echte adres van de led 0-167 } else { pixels.setPixelColor(m, Wheel(((f * RainbowSpec/ e) + d) & 255)); // m = echte adres van de led 0-167 } pixels.show(); delay(wait); } else { // fix color pixels.setPixelColor(m, ColorColor); // fix color for NeoPixels, m = echte adres van de led 0-167 pixels.show(); } } //-------------------------------------------- // *** einde rainbow effect *** //-------------------------------------------- //-------------------------------------------- // *** begin Wheel *** //-------------------------------------------- // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if (WheelPos < 85) { return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos < 170) { WheelPos -= 85; return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } //-------------------------------------------- // *** einde Wheel *** //-------------------------------------------- //-------------------------------------------- // *** begin Theatre-style *** //-------------------------------------------- //Theatre-style crawling lights with rainbow effect void theaterChaseRainbow(uint8_t wait) { for (int j = 0; j < 256; j++) { // cycle all 256 colors in the wheel for (int q = 0; q < 3; q++) { for (int i = 0; i < pixels.numPixels(); i = i + 3) { pixels.setPixelColor(i + q, Wheel( (i + j) % 255)); //turn every third pixel on } pixels.show(); delay(wait); for (int i = 0; i < pixels.numPixels(); i = i + 3) { pixels.setPixelColor(i + q, 0); //turn every third pixel off } } } } //-------------------------------------------- // *** einde Theatre-style *** //-------------------------------------------- //-------------------------------------------- // *** begin void DCF77Check *** //-------------------------------------------- void DCF77Check() { digitalWrite(DCF77_Power_PIN, HIGH); // turn the DCF77 power on. delay(1000); DCF.Start(); // start the DCF-module // Serial.println("Start DCF77 Check routine. "); // Serial.println("Waiting for DCF77 time ... "); // Serial.println("It will take at least 2 minutes until a first update can be processed."); if (initFunk == 1) { ColorColor = ColorBlue; //zet kleur blauw funk ontvangen zetFunk(); //funk led op 1 in tussen array aanFunk(); //funk leds aanzetten } for (int i = 0; i < 600; i++) { // test maximaal 10 minuten time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is available if (DCFtime != 0) { // Serial.println("Time is updated"); RTC.adjust(DCFtime); delay(1000); if (initFunk == 1) { ColorColor = ColorGreen; // zet kleur groen funk OK aanFunk(); //funk leds aanzetten initFunk = 0; //funk leds alleen aan bij opstart } DCF.Stop(); digitalWrite(DCF77_Power_PIN, LOW); // turn the DCF77 power off. delay(10000); break; } else { delay(1000); } } // end for loop na 10 minuten if (initFunk == 1) { ColorColor = ColorRed; // zet kleur rood funk niet OK aanFunk(); // funk leds aanzetten initFunk = 0; // funk leds alleen aan bij opstart DCF.Stop(); digitalWrite(DCF77_Power_PIN, LOW); // turn the DCF77 power off. delay(10000); } } // end void DCF77Check //-------------------------------------------- // *** einde void DCF77Check *** //-------------------------------------------- //-------------------------------------------- // *** begin void aanFunk *** //-------------------------------------------- void aanFunk() { TempClockColor = ClockColor; // save color status fix or rainbow ClockColor = 0 ; // fix color NeoPixelsOnOff(); // call NeoPixels On Off ClockColor = TempClockColor; // save color status fix or rainbow ColorColor = pixels.Color(FixColorRed, FixColorGreen, FixColorBlue ); // fix color for NeoPixels } //-------------------------------------------- // *** einde void aanFunk *** //-------------------------------------------- //-------------------------------------------- // *** begin void ledaanzeten *** //-------------------------------------------- void ledaanzeten() { //leds die moeten worden aangezet if ( RADAR_In == 1 || SecKnip == 1 ) { knipper = dt.second ; if (knipper == 0) { knipper = 60; } if ( (knipper % 2) == 0) { // 0 = even en 1 = oneven seconde voor linker en rechter seconde led te laten knipperen Led_Aan[167] = 1; // links de even secondes Led_Aan[154] = 0; } // seconde led rechts default aanzetten en controlleren met led links of hij aan of uit moet zijn else { Led_Aan[167] = 0; // rechts de oneven secondes 167 = 0 en 154 = 1 Led_Aan[154] = 1; } // seconde led rechts default aanzetten en controlleren met led links of hij aan of uit moet zijn } else { Led_Aan[167] = 0; // beide uit Led_Aan[154] = 0; } // tekst HET IS { Led_Aan[0] = 1, Led_Aan[1] = 1, Led_Aan[2] = 1, Led_Aan[4] = 1, Led_Aan[5] = 1 ; } // Minuten bepalen en aanzetten minuten = dt.minute ; if (minuten >= 0 && minuten < 10) { if (minuten == 0) { zetUur(); } else if (minuten == 1) { zetmEen(); zetOver(); } else if (minuten == 2) { zetmTwee(); zetOver(); } else if (minuten == 3) { zetmDrie(); zetOver(); } else if (minuten == 4) { zetmVier(); zetOver(); } else if (minuten == 5) { zetmVijf(); zetOver(); } else if (minuten == 6) { zetmZes(); zetOver(); } else if (minuten == 7) { zetmZeven(); zetOver(); } else if (minuten == 8) { zetmAcht(); zetOver(); } else if (minuten == 9) { zetmNegen(); zetOver(); } } else if (minuten >= 10 && minuten < 20) { if (minuten == 10) { zetmTien1(); zetOver(); } else if (minuten == 11) { zetmElf(); zetOver(); } else if (minuten == 12) { zetmTwaalf(); zetOver(); } else if (minuten == 13) { zetmDertien(); zetOver(); } else if (minuten == 14) { zetmVeertien(); zetOver(); } else if (minuten == 15) { zetmKwart(); zetOver(); } else if (minuten == 16) { zetmZes(); zetmTien2(); zetOver(); } else if (minuten == 17) { zetmZeven(); zetmTien2(); zetOver(); } else if (minuten == 18) { zetmAcht(); zetmTien2(); zetOver(); } else if (minuten == 19) { zetmNegen(); zetmTien1(); zetOver(); } } else if (minuten >= 20 && minuten < 30) { if (minuten == 20) { zetmTwintig(); zetOver(); } else if (minuten == 21) { zetmEen(); zetmEn1(); zetmTwintig(); zetOver(); } else if (minuten == 22) { zetmTwee(); zetmEn1(); zetmTwintig(); zetOver(); } else if (minuten == 23) { zetmDrie(); zetmEn2(); zetmTwintig(); zetOver(); } else if (minuten == 24) { zetmVier(); zetmEn1(); zetmTwintig(); zetOver(); } else if (minuten == 25) { zetmVijf(); zetVoor(); zetHalf(); } else if (minuten == 26) { zetmVier(); zetVoor(); zetHalf(); } else if (minuten == 27) { zetmDrie(); zetVoor(); zetHalf(); } else if (minuten == 28) { zetmTwee(); zetVoor(); zetHalf(); } else if (minuten == 29) { zetmEen(); zetVoor(); zetHalf(); } } else if (minuten >= 30 && minuten < 40) { if (minuten == 30) { zetHalf(); } else if (minuten == 31) { zetmEen(); zetOver(); zetHalf(); } else if (minuten == 32) { zetmTwee(); zetOver(); zetHalf(); } else if (minuten == 33) { zetmDrie(); zetOver(); zetHalf(); } else if (minuten == 34) { zetmVier(); zetOver(); zetHalf(); } else if (minuten == 35) { zetmVijf(); zetOver(); zetHalf(); } else if (minuten == 36) { zetmVier(); zetmEn1(); zetmTwintig(); zetVoor(); } else if (minuten == 37) { zetmDrie(); zetmEn2(); zetmTwintig(); zetVoor(); } else if (minuten == 38) { zetmTwee(); zetmEn1(); zetmTwintig(); zetVoor(); } else if (minuten == 39) { zetmEen(); zetmEn1(); zetmTwintig(); zetVoor(); } } else if (minuten >= 40 && minuten < 50) { if (minuten == 40) { zetmTwintig(); zetVoor(); } else if (minuten == 41) { zetmNegen(); zetmTien1(); zetVoor(); } else if (minuten == 42) { zetmAcht(); zetmTien2(); zetVoor(); } else if (minuten == 43) { zetmZeven(); zetmTien1(); zetVoor(); } else if (minuten == 44) { zetmZes(); zetmTien2(); zetVoor(); } else if (minuten == 45) { zetmKwart(); zetVoor(); } else if (minuten == 46) { zetmVeertien(); zetVoor(); } else if (minuten == 47) { zetmDertien(); zetVoor(); } else if (minuten == 48) { zetmTwaalf(); zetVoor(); } else if (minuten == 49) { zetmElf(); zetVoor(); } } else if (minuten >= 50 && minuten < 60) { if (minuten == 50) { zetmTien1(); zetVoor(); } else if (minuten == 51) { zetmNegen(); zetVoor(); } else if (minuten == 52) { zetmAcht(); zetVoor(); } else if (minuten == 53) { zetmZeven(); zetVoor(); } else if (minuten == 54) { zetmZes(); zetVoor(); } else if (minuten == 55) { zetmVijf(); zetVoor(); } else if (minuten == 56) { zetmVier(); zetVoor(); } else if (minuten == 57) { zetmDrie(); zetVoor(); } else if (minuten == 58) { zetmTwee(); zetVoor(); } else if (minuten == 59) { zetmEen(); zetVoor(); } } // Uren bepalen en aanzetten uren = dt.hour ; if (uren >= 12) { uren -= 12; } if (minuten >= 25) { uren++; } if (uren == 12) { uren = 0; } switch (uren) { case 0: zetuTwaalf(); break; case 1: zetuEen(); break; case 2: zetuTwee(); break; case 3: zetuDrie(); break; case 4: zetuVier(); break; case 5: zetuVijf(); break; case 6: zetuZes(); break; case 7: zetuZeven(); break; case 8: zetuAcht(); break; case 9: zetuNegen(); break; case 10: zetuTien(); break; case 11: zetuElf(); break; } } //-------------------------------------------- // *** einde void ledaanzeten *** //-------------------------------------------- //-------------------------------------------- // Leds die de woorden maken //-------------------------------------------- void zetmEen() { Led_Aan[7] = 1, Led_Aan[8] = 1, Led_Aan[9] = 1 ; // min - een } void zetmTwee() { Led_Aan[27] = 1, Led_Aan[26] = 1, Led_Aan[25] = 1, Led_Aan[24] = 1 ; // min - twee } void zetmDrie() { Led_Aan[56] = 1, Led_Aan[57] = 1, Led_Aan[58] = 1, Led_Aan[59] = 1 ; // min - drie } void zetmVier() { Led_Aan[31] = 1, Led_Aan[32] = 1, Led_Aan[33] = 1, Led_Aan[34] = 1 ; // min - vier } void zetmVijf() { Led_Aan[10] = 1, Led_Aan[11] = 1, Led_Aan[12] = 1, Led_Aan[13] = 1 ; // min - vijf } void zetmZes() { Led_Aan[28] = 1, Led_Aan[29] = 1, Led_Aan[30] = 1 ; // min - zes } void zetmZeven() { Led_Aan[19] = 1, Led_Aan[20] = 1, Led_Aan[21] = 1, Led_Aan[22] = 1, Led_Aan[23] = 1 ; // min - zeven } void zetmAcht() { Led_Aan[42] = 1, Led_Aan[43] = 1, Led_Aan[44] = 1, Led_Aan[45] = 1 ; // min - acht } void zetmNegen() { Led_Aan[14] = 1, Led_Aan[15] = 1, Led_Aan[16] = 1, Led_Aan[17] = 1, Led_Aan[18] = 1 ; // min - negen } void zetmTien1() { Led_Aan[49] = 1, Led_Aan[48] = 1, Led_Aan[47] = 1, Led_Aan[46] = 1 ; // min - tien (1) } void zetmTien2() { Led_Aan[64] = 1, Led_Aan[65] = 1, Led_Aan[66] = 1, Led_Aan[67] = 1 ; // min - tien (2) } void zetmElf() { Led_Aan[55] = 1, Led_Aan[54] = 1, Led_Aan[53] = 1 ; // min - elf } void zetmTwaalf() { Led_Aan[35] = 1, Led_Aan[36] = 1, Led_Aan[37] = 1, Led_Aan[38] = 1, Led_Aan[39] = 1, Led_Aan[40] = 1 ; // min - twaalf } void zetmDertien() { Led_Aan[52] = 1, Led_Aan[51] = 1, Led_Aan[50] = 1, Led_Aan[49] = 1, Led_Aan[48] = 1, Led_Aan[47] = 1, Led_Aan[46] = 1 ; // min - dertien } void zetmVeertien() { Led_Aan[60] = 1, Led_Aan[61] = 1, Led_Aan[62] = 1, Led_Aan[63] = 1, Led_Aan[64] = 1, Led_Aan[65] = 1, Led_Aan[66] = 1, Led_Aan[67] = 1 ; // min - veertien } void zetmKwart() { Led_Aan[79] = 1, Led_Aan[80] = 1, Led_Aan[81] = 1, Led_Aan[82] = 1, Led_Aan[83] = 1 ; // min - vijftien = kwart } void zetmTwintig() { Led_Aan[71] = 1, Led_Aan[72] = 1, Led_Aan[73] = 1, Led_Aan[74] = 1, Led_Aan[75] = 1, Led_Aan[76] = 1, Led_Aan[77] = 1 ; // min - twintig over } //-------------------------------------------- // uren //-------------------------------------------- void zetuEen() { Led_Aan[115] = 1, Led_Aan[116] = 1, Led_Aan[117] = 1 ; // uren - een } void zetuTwee() { Led_Aan[108] = 1, Led_Aan[109] = 1, Led_Aan[110] = 1, Led_Aan[111] = 1 ; // uren - twee } void zetuDrie() { Led_Aan[141] = 1, Led_Aan[142] = 1, Led_Aan[143] = 1, Led_Aan[144] = 1 ; // uren - drie } void zetuVier() { Led_Aan[119] = 1, Led_Aan[120] = 1, Led_Aan[121] = 1, Led_Aan[122] = 1 ; // uren - vier } void zetuVijf() { Led_Aan[126] = 1, Led_Aan[127] = 1, Led_Aan[128] = 1, Led_Aan[129] = 1 ; // uren - vijf } void zetuZes() { Led_Aan[104] = 1, Led_Aan[105] = 1, Led_Aan[106] = 1 ; // uren - zes } void zetuZeven() { Led_Aan[135] = 1, Led_Aan[136] = 1, Led_Aan[137] = 1, Led_Aan[138] = 1, Led_Aan[139] = 1 ; // uren - zeven } void zetuAcht() { Led_Aan[150] = 1, Led_Aan[151] = 1, Led_Aan[152] = 1, Led_Aan[153] = 1 ; // uren - acht } void zetuNegen() { Led_Aan[98] = 1, Led_Aan[99] = 1, Led_Aan[100] = 1, Led_Aan[101] = 1, Led_Aan[102] = 1 ; // uren - negen } void zetuTien() { Led_Aan[131] = 1, Led_Aan[132] = 1, Led_Aan[133] = 1, Led_Aan[134] = 1 ; // uren - tien } void zetuElf() { Led_Aan[112] = 1, Led_Aan[113] = 1, Led_Aan[114] = 1 ; // uren - elf } void zetuTwaalf() { Led_Aan[161] = 1, Led_Aan[162] = 1, Led_Aan[163] = 1, Led_Aan[164] = 1, Led_Aan[165] = 1, Led_Aan[166] = 1 ; // uren - twaalf } //-------------------------------------------- // Zet de rest //-------------------------------------------- void zetUur() { Led_Aan[156] = 1, Led_Aan[157] = 1, Led_Aan[158] = 1 ; // uur } void zetmEn1() { Led_Aan[46] = 1, Led_Aan[47] = 1 ; // en (1) } void zetmEn2() { Led_Aan[68] = 1, Led_Aan[69] = 1 ; // en (2) } void zetVoor() { Led_Aan[89] = 1, Led_Aan[90] = 1, Led_Aan[91] = 1, Led_Aan[92] = 1 ; // voor } void zetOver() { Led_Aan[85] = 1, Led_Aan[86] = 1, Led_Aan[87] = 1, Led_Aan[88] = 1 ; // over } void zetHalf() { Led_Aan[94] = 1, Led_Aan[95] = 1, Led_Aan[96] = 1, Led_Aan[97] = 1 ; // half } void zetFunk() { Led_Aan[53] = 1, Led_Aan[93] = 1, Led_Aan[117] = 1, Led_Aan[140] = 1 ; // funk } //-------------------------------------------- // einde woorden maken //-------------------------------------------- //-------------------------------------------- // *** begin void Smiley *** //-------------------------------------------- void zetSmiley() { for (int k = 0; k < NUMPIXELS; k++) { pixels.setPixelColor(k , ColorYellow); // k = address of the LEDs 0-167 all leds yellow } // make all colors correct pixels.setPixelColor( 0, ColorBlack); // black pixels.setPixelColor( 1, ColorBlack); pixels.setPixelColor( 2, ColorBlack); pixels.setPixelColor( 3, ColorBlack); pixels.setPixelColor( 10, ColorBlack); pixels.setPixelColor( 11, ColorBlack); pixels.setPixelColor( 12, ColorBlack); pixels.setPixelColor( 13, ColorBlack); pixels.setPixelColor( 14, ColorBlack); pixels.setPixelColor( 15, ColorBlack); pixels.setPixelColor( 26, ColorBlack); pixels.setPixelColor( 27, ColorBlack); pixels.setPixelColor( 28, ColorBlack); pixels.setPixelColor( 41, ColorBlack); pixels.setPixelColor( 44, ColorWhite); // white pixels.setPixelColor( 45, ColorWhite); pixels.setPixelColor( 46, ColorWhite); pixels.setPixelColor( 51, ColorWhite); pixels.setPixelColor( 52, ColorWhite); pixels.setPixelColor( 53, ColorWhite); pixels.setPixelColor( 58, ColorWhite); pixels.setPixelColor( 59, ColorBlue); // eye pupil pixels.setPixelColor( 60, ColorWhite); pixels.setPixelColor( 65, ColorWhite); pixels.setPixelColor( 66, ColorBlue); // eye pupil pixels.setPixelColor( 67, ColorWhite); pixels.setPixelColor( 72, ColorWhite); pixels.setPixelColor( 73, ColorWhite); pixels.setPixelColor( 74, ColorWhite); pixels.setPixelColor( 79, ColorWhite); pixels.setPixelColor( 80, ColorWhite); pixels.setPixelColor( 81, ColorWhite); pixels.setPixelColor(101 , ColorBlue); // blue pixels.setPixelColor(102 , ColorBlue); pixels.setPixelColor(107 , ColorBlue); pixels.setPixelColor(108 , ColorBlue); pixels.setPixelColor(116 , ColorBlue); pixels.setPixelColor(117 , ColorBlue); pixels.setPixelColor(120 , ColorBlue); pixels.setPixelColor(121 , ColorBlue); pixels.setPixelColor(131 , ColorBlue); pixels.setPixelColor(132 , ColorBlue); pixels.setPixelColor(133 , ColorBlue); pixels.setPixelColor(134 , ColorBlue); pixels.setPixelColor(112 , ColorBlack); // black pixels.setPixelColor(125 , ColorBlack); pixels.setPixelColor(126 , ColorBlack); pixels.setPixelColor(139 , ColorBlack); pixels.setPixelColor(140 , ColorBlack); pixels.setPixelColor(141 , ColorBlack); pixels.setPixelColor(152 , ColorBlack); pixels.setPixelColor(153 , ColorBlack); pixels.setPixelColor(154 , ColorBlack); pixels.setPixelColor(155 , ColorBlack); pixels.setPixelColor(156 , ColorBlack); pixels.setPixelColor(157 , ColorBlack); pixels.setPixelColor(164 , ColorBlack); pixels.setPixelColor(165 , ColorBlack); pixels.setPixelColor(166 , ColorBlack); pixels.setPixelColor(167 , ColorBlack); pixels.show(); delay(1500); // on time smiley if ( emo > 2 ) { // stick the tongue out after 3 times a wink 0-1-2 pixels.setPixelColor( 118, ColorRed); // red pixels.setPixelColor( 119, ColorRed); pixels.setPixelColor( 132, ColorRed); pixels.setPixelColor( 133, ColorRed); pixels.setPixelColor( 146, ColorRed); pixels.setPixelColor( 147, ColorRed); pixels.setPixelColor( 160, ColorRed); pixels.setPixelColor( 161, ColorRed); pixels.show(); delay(400); // time sticking out the tongue pixels.setPixelColor( 118, ColorBlue); // color return pixels.setPixelColor( 119, ColorBlue); pixels.setPixelColor( 132, ColorBlue); pixels.setPixelColor( 133, ColorBlue); pixels.setPixelColor( 146, ColorYellow); pixels.setPixelColor( 147, ColorYellow); pixels.setPixelColor( 160, ColorYellow); pixels.setPixelColor( 161, ColorYellow); emo = 0; // reset counter } else { // wink cq knipoog pixels.setPixelColor( 51, ColorYellow); // yellow pixels.setPixelColor( 52, ColorYellow); pixels.setPixelColor( 53, ColorYellow); pixels.setPixelColor( 58, ColorYellow); pixels.setPixelColor( 59, ColorYellow); pixels.setPixelColor( 60, ColorYellow); pixels.setPixelColor( 79, ColorYellow); pixels.setPixelColor( 80, ColorYellow); pixels.setPixelColor( 81, ColorYellow); pixels.show(); delay(400); // time of wink pixels.setPixelColor( 51, ColorWhite); pixels.setPixelColor( 52, ColorWhite); pixels.setPixelColor( 53, ColorWhite); pixels.setPixelColor( 58, ColorWhite); pixels.setPixelColor( 59, ColorBlue); pixels.setPixelColor( 60, ColorWhite); pixels.setPixelColor( 79, ColorWhite); pixels.setPixelColor( 80, ColorWhite); pixels.setPixelColor( 81, ColorWhite); emo++; // count the number of winking } pixels.show(); delay(700); SmileycountTel = 0; // reset counter } //-------------------------------------------- // *** einde void Smiley *** //-------------------------------------------- //-------------------------------------------- // *** begin void BrightnessControl *** //-------------------------------------------- void BrightnessControl() { LDRValue = analogRead(LDRpin); // read the value from the LDR // calculate the value for the light setting LDRValue = (( LDRValue / 7 ) + Brightness_Offset ) ; if ( xy < 25 ) { // don't change too quickly xy = xy + 1; } else if ( LDRValue > BerLDRValue+3 ) { // with dead band BerLDRValue = BerLDRValue + 1 ; xy = 0; } else if ( LDRValue < BerLDRValue-3 ) { // with dead band BerLDRValue = BerLDRValue - 1 ; xy = 0; } else { // nothing to do xy = 0; } /* Use these print statements to check the brightness setting Serial.print(LDRValue); // print the value to the serial port Serial.print(" "); Serial.print("LRDValue"); Serial.print(" "); Serial.print(BerLDRValue); // print the value to the serial port Serial.print(" "); Serial.println("BerLDRValue"); */ } //-------------------------------------------- // *** einde void BrightnessControl *** //-------------------------------------------- //-------------------------------------------- // *** begin void reciveIR *** //-------------------------------------------- void reciveIR() { // takes action based on IR code received k=0; do { k = k + 1 ; irrecv.resume(); // receive the next value delay(500); if (irrecv.decode(&results)) // have we received an IR signal? if(results.value == button_ok) { // if OK then continue, otherwise return because it is an unintended code translateIR(); zetHart(); emo =3 ; zetSmiley(); k = 20; // end } } while (k < 5 ); } // End reciveIR() //-------------------------------------------- // *** end void reciveIR *** //-------------------------------------------- //-------------------------------------------- // *** begin void translateIR *** //-------------------------------------------- void translateIR() { zeroleds(); refresh = true; for (int k = 154; k < 168; k++) { //tussen array vullen met 1 voor kleurinstelling Led_Aan[k] = 1; } if ( ClockColor == 0) { // button 1 = color Led_Aan[ 0] = 1, Led_Aan[ 1] = 1, Led_Aan[ 2] = 1, Led_Aan[ 3] = 1; } else { Led_Aan[10] = 1, Led_Aan[11] = 1, Led_Aan[12] = 1, Led_Aan[13] = 1; } if ( SecKnip == 0) { // button 2 = knipper Led_Aan[24] = 1, Led_Aan[25] = 1, Led_Aan[26] = 1, Led_Aan[27] = 1; } else { Led_Aan[14] = 1, Led_Aan[15] = 1, Led_Aan[16] = 1, Led_Aan[17] = 1; } if ( SmileyOnOff == 0) { // button 3 = smiley Led_Aan[28] = 1, Led_Aan[29] = 1, Led_Aan[30] = 1, Led_Aan[31] = 1; } else { Led_Aan[38] = 1, Led_Aan[39] = 1, Led_Aan[40] = 1, Led_Aan[41] = 1; } if ( DCF77OnOff == 0) { // button 4 = DCF77 Led_Aan[52] = 1, Led_Aan[53] = 1, Led_Aan[54] = 1, Led_Aan[55] = 1; } else { Led_Aan[42] = 1, Led_Aan[43] = 1, Led_Aan[44] = 1, Led_Aan[45] = 1; } // Serial.println(" In IR routine beland"); instel: if ( refresh == true) { // update display ones refresh = false; NeoPixelsOnOff(); // call NeoPixels On Off } irrecv.resume(); // receive the next value delay(350); if (irrecv.decode(&results)) { // have we received an IR signal? switch(results.value) { case button_ok: // Serial.println(" OK => return "); break; case button_1: // Serial.println(" 1 => ClockColor "); if ( ClockColor == 0) { ClockColor = 1; EEPROM.put(eeAddress01, ClockColor); // EEPROM.put because there is always change Led_Aan[ 0] = 0, Led_Aan[ 1] = 0, Led_Aan[ 2] = 0, Led_Aan[ 3] = 0; Led_Aan[10] = 1, Led_Aan[11] = 1, Led_Aan[12] = 1, Led_Aan[13] = 1; } else { ClockColor = 0; EEPROM.put(eeAddress01, ClockColor); // EEPROM.put because there is always change Led_Aan[ 0] = 1, Led_Aan[ 1] = 1, Led_Aan[ 2] = 1, Led_Aan[ 3] = 1; Led_Aan[10] = 0, Led_Aan[11] = 0, Led_Aan[12] = 0, Led_Aan[13] = 0; } refresh = true; goto instel; // of direkt beeindigen met break; case button_2: // Serial.println(" 2 => SecKnip "); if ( SecKnip == 0) { SecKnip = 1; EEPROM.put(eeAddress02, SecKnip); // EEPROM.put because there is always change Led_Aan[14] = 1, Led_Aan[15] = 1, Led_Aan[16] = 1, Led_Aan[17] = 1; Led_Aan[24] = 0, Led_Aan[25] = 0, Led_Aan[26] = 0, Led_Aan[27] = 0; } else { SecKnip = 0; EEPROM.put(eeAddress02, SecKnip); // EEPROM.put because there is always change Led_Aan[14] = 0, Led_Aan[15] = 0, Led_Aan[16] = 0, Led_Aan[17] = 0; Led_Aan[24] = 1, Led_Aan[25] = 1, Led_Aan[26] = 1, Led_Aan[27] = 1; } refresh = true; goto instel; // of direkt beeindigen met break; case button_3: // Serial.println(" 3 => SmileyOnOff "); if ( SmileyOnOff == 0) { SmileyOnOff = 1; EEPROM.put(eeAddress03, SmileyOnOff); // EEPROM.put because there is always change Led_Aan[28] = 0, Led_Aan[29] = 0, Led_Aan[30] = 0, Led_Aan[31] = 0; Led_Aan[38] = 1, Led_Aan[39] = 1, Led_Aan[40] = 1, Led_Aan[41] = 1; } else { SmileyOnOff = 0; EEPROM.put(eeAddress03, SmileyOnOff); // EEPROM.put because there is always change Led_Aan[28] = 1, Led_Aan[29] = 1, Led_Aan[30] = 1, Led_Aan[31] = 1; Led_Aan[38] = 0, Led_Aan[39] = 0, Led_Aan[40] = 0, Led_Aan[41] = 0; } refresh = true; goto instel; // of direkt beeindigen met break; case button_4: // Serial.println(" 4 => DCF77-On-Off "); // DCF77-On-Off if ( DCF77OnOff == 0) { DCF77OnOff = 1; EEPROM.put(eeAddress04, DCF77OnOff); // EEPROM.put because there is always change zeroleds(); // call zeroleds, tussen array vullen met nullen initFunk = 1; DCF77Check(); break; } else { DCF77OnOff = 0; EEPROM.put(eeAddress04, DCF77OnOff); // EEPROM.put because there is always change Led_Aan[52] = 1, Led_Aan[53] = 1, Led_Aan[54] = 1, Led_Aan[55] = 1; Led_Aan[42] = 0, Led_Aan[43] = 0, Led_Aan[44] = 0, Led_Aan[45] = 0; } refresh = true; goto instel; // of direkt beeindigen met break; case button_5: // Serial.println(" 5 => SmileycountSet"); zetuVijf(); // five to indicate that button 5 has been operated instel_value(SmileycountSet, 5); goto instel; case button_6: // Serial.println(" 6 => RainbowSpec"); zetuZes(); // six to indicate that button 6 has been operated instel_value(RainbowSpec, 6); goto instel; case button_7: // Serial.println(" 7 => color red"); zetuZeven(); // seven to indicate that the button 7 has been operated instel_value(FixColorRed, 7); goto instel; case button_8: // Serial.println(" 8 => color green"); zetuAcht(); // eight to indicate that the button 8 has been operated instel_value(FixColorGreen, 8); goto instel; case button_9: // Serial.println(" 9 => color blue"); zetuNegen(); // nine to indicate that the 9 button is operated instel_value(FixColorBlue, 9); goto instel; case button_0: // Serial.println(" 0 => tijd instellen"); zetuTien(); // ten to indicate that the 0 button has been operated NeoPixelsOnOff(); // call NeoPixels On Off instel_time(uren, minuten); break; case button_11: // Serial.println(" 11 => helderheids offset"); zetuElf(); // eleven to indicate that the / \ button has been operated instel_value(Brightness_Offset, 11); goto instel; default: Serial.print(results.value, HEX); Serial.println(" other button "); goto instel; } // end swtich } // end if irrecv else { delay(100); // Do not get immediate repeat Serial.println(" -No code received -"); goto instel; } // end else } // end translateIR //-------------------------------------------- // *** einde void translateIR *** //-------------------------------------------- //-------------------------------------------- // *** begin void instel_time *** //-------------------------------------------- void instel_time(byte uren, byte minuten) { bool time_update = false; bool new_waarde = false; bool verlaat_time = false; // om uit de while loop te gaan while ( verlaat_time == false) { // do zolang we niet terug willen keren irrecv.resume(); // receive the next value delay(350); if (irrecv.decode(&results)) { // have we received an IR signal if ( results.value == button_ok) { // OK => exit if ( time_update == true) { clock.setDateTime(2019, 05, 30, uren, minuten, 0); // possibly plus 30 seconds left in the middle of the minute } verlaat_time = true; // om uit de while loop te gaan, of break; } if ( results.value == button_fw) { uren++; new_waarde = true; } if ( results.value == button_rv) { uren--; new_waarde = true; } if ( results.value == button_r) { minuten++; new_waarde = true; } if ( results.value == button_l) { minuten--; new_waarde = true; } if ( new_waarde == true ) { if ( minuten == 60) { minuten = 0; } else if ( minuten > 60) { minuten = 59; } else if ( uren == 13) { uren = 0; } else if ( uren > 13) { uren = 12; } clock.setDateTime(2019, 05, 30, uren, minuten, 0); // possibly plus 30 seconds left in the middle of the minute dt = clock.getDateTime(); time_update = true; new_waarde = false; } zeroleds(); // call zeroleds, tussen array vullen met nullen ledaanzeten(); // call ledaanzeten, welke leds moeten worden aangezet NeoPixelsOnOff(); // call NeoPixels On Off } // end decode } // end while } // end void //-------------------------------------------- // *** end void instel_time *** //-------------------------------------------- //-------------------------------------------- // *** begin void instel_value *** //-------------------------------------------- void instel_value(byte value_1, byte value_2) { // value_1 = xx , value_2 = what is set bool verlaat_loop = false ; // om uit de while loop te gaan TempClockColor = ClockColor; // save color status fix or rainbow if (value_2 == 5) { ColorColor = ColorWhite; } // white else if (value_2 == 6) { ColorColor = ColorYellow; } // yellow else if (value_2 == 7) { ColorColor = ColorRed; // color red ClockColor = 0; } // tijdelijk fix color else if (value_2 == 8) { ColorColor = ColorGreen; // color green ClockColor = 0; } // tijdelijk fix color else if (value_2 == 9) { ColorColor = ColorBlue; // color blue ClockColor = 0; } // tijdelijk fix color else if (value_2 == 11) { ColorColor = ColorYellow; } // yellow NeoPixelsOnOff(); // call NeoPixels On Off pixels.setPixelColor(83 - (value_1 % 10), ColorColor); // kleur led's if ( value_1 < 100 ) { pixels.setPixelColor(84 + (value_1 / 10), ColorColor); // kleur led's pixels.setPixelColor (111, ColorColor); // kleur led's } else if ( value_1 < 200 ) { pixels.setPixelColor(84 + ((value_1 - 100) / 10), ColorColor); // kleur led's pixels.setPixelColor (110, ColorColor); // kleur led's } else { pixels.setPixelColor(84 + ((value_1 - 200) / 10), ColorColor); // kleur led's pixels.setPixelColor (109, ColorColor); // kleur led's } pixels.show(); while ( verlaat_loop == false) { // do as long as we don't want to return irrecv.resume(); // receive the next value delay(350); if (irrecv.decode(&results)) { // have we received an IR signal instel_color? k = value_1; // hold current value to turn it off later if(results.value == herhaal_c) { // if repeat command (button held down) results.value = lastCode; // replace FFFF with last good code } if ( results.value == button_ok) { // OK => then exit refresh = true; ClockColor = TempClockColor; // color status terug zetten if (value_2 == 5) { Led_Aan[126] = 0, Led_Aan[127] = 0, Led_Aan[128] = 0, Led_Aan[129] = 0 ; // VIJF EEPROM.update(eeAddress05, SmileycountSet); // store in EEPROM } else if (value_2 == 6) { Led_Aan[104] = 0, Led_Aan[105] = 0, Led_Aan[106] = 0 ; // ZES EEPROM.update(eeAddress06, RainbowSpec); // store in EEPROM } else if (value_2 == 7) { Led_Aan[135] = 0, Led_Aan[136] = 0, Led_Aan[137] = 0, Led_Aan[138] = 0, Led_Aan[139] = 0 ; // ZEVEN EEPROM.update(eeAddress07, FixColorRed); // store in EEPROM } else if (value_2 == 8) { Led_Aan[150] = 0, Led_Aan[151] = 0, Led_Aan[152] = 0, Led_Aan[153] = 0 ; // ACHT EEPROM.update(eeAddress08, FixColorGreen); // store in EEPROM } else if (value_2 == 9) { Led_Aan[ 98] = 0, Led_Aan[ 99] = 0, Led_Aan[100] = 0, Led_Aan[101] = 0, Led_Aan[102] = 0 ; // NEGEN EEPROM.update(eeAddress09, FixColorBlue); // store in EEPROM } else if (value_2 == 11){ Led_Aan[ 112] = 0, Led_Aan[ 113] = 0, Led_Aan[114] = 0 ; // ELF EEPROM.update(eeAddress11, Brightness_Offset); // store in EEPROM } verlaat_loop = true; } // end OK if ( results.value == button_r) { // RIGHT lastCode = results.value; // record this as last good command value_1++; // plus 1 } if ( results.value == button_fw) { // FORWARD lastCode = results.value; // record this as last good command value_1 = (value_1 + 10); // plus 10 } if ( results.value == button_l) { // LEFT lastCode = results.value; // record this as last good command value_1--; // min 1 } if ( results.value == button_rv) { // REVERSE lastCode = results.value; // record this as last good command value_1 = (value_1 - 10); // min 10 } if (value_2 == 5) { SmileycountSet = value_1; } else if (value_2 == 6) { RainbowSpec = value_1; } else if (value_2 == 7) { FixColorRed = value_1; } else if (value_2 == 8) { FixColorGreen = value_1; } else if (value_2 == 9) { FixColorBlue = value_1; } else if (value_2 == 11){ value_1 = min (value_1 , Brightness_max); value_1 = max (value_1 , Brightness_min); Brightness_Offset = value_1; } ColorColor = pixels.Color(FixColorRed, FixColorGreen, FixColorBlue ); // fix color for NeoPixels NeoPixelsOnOff(); // call NeoPixels On Off pixels.setPixelColor(83 - (k % 10), ColorBlack); // kleur led's if ( k < 100 ) { pixels.setPixelColor(84 + (k / 10), ColorBlack); // kleur led's pixels.setPixelColor (111, ColorBlack); // kleur led's } else if ( k < 200 ) { pixels.setPixelColor(84 + ((k - 100) / 10), ColorBlack); // kleur led's pixels.setPixelColor (110, ColorBlack); // kleur led's } else { pixels.setPixelColor(84 + ((k - 200) / 10), ColorBlack); // kleur led's pixels.setPixelColor (109, ColorBlack); // kleur led's } pixels.setPixelColor(83 - (value_1 % 10), ColorColor); // kleur led's if ( value_1 < 100 ) { pixels.setPixelColor(84 + (value_1 / 10), ColorColor); // kleur led's pixels.setPixelColor (111, ColorColor); // kleur led's } else if ( value_1 < 200 ) { pixels.setPixelColor(84 + ((value_1 - 100) / 10), ColorColor); // kleur led's pixels.setPixelColor (110, ColorColor); // kleur led's } else { pixels.setPixelColor(84 + ((value_1 - 200) / 10), ColorColor); // kleur led's pixels.setPixelColor (109, ColorColor); // kleur led's } pixels.show(); } // end decode } // end while } // end void //-------------------------------------------- // *** end void instel_value *** //-------------------------------------------- //-------------------------------------------- // *** begin void NeoPixelsOnOff *** //-------------------------------------------- void NeoPixelsOnOff() { // zet de led's aan e = 0; for (int k = 0; k < NUMPIXELS; k++) { // loop over het led array 168 posities if (Led_Aan[k] == 1 ) { e = e + 1; // tellen hoeveel leds aan zijn } } for (int k = 0; k < NUMPIXELS; k++) { if (Led_Aan[k] == 1 ) { // led die aan moet zijn ook aan zetten m = k; // nummer van de led letterCycle(1); // via letterCycle aanzetten } else { pixels.setPixelColor(k, pixels.Color(0, 0, 0)); // led uit zetten pixels.show(); } } } //-------------------------------------------- // *** einde void NeoPixelsOnOff *** //-------------------------------------------- //-------------------------------------------- // *** begin void Hart *** //-------------------------------------------- void zetHart() { bool big_or_small = true; TempClockColor = ClockColor; // save color status fix or rainbow ColorColor = ColorRed; // fix color for NeoPixels ClockColor = 0 ; // fix color zeroleds(); for (int k = 15; k < 136; k++) { //tussen array vullen Led_Aan[k] = 1; } Led_Aan[2] = 1, Led_Aan[3] = 1, Led_Aan[10] = 1, Led_Aan[11] = 1 ; Led_Aan[145] = 1, Led_Aan[146] = 1, Led_Aan[147] = 1, Led_Aan[148] = 1, Led_Aan[160] = 1, Led_Aan[161] = 1 ; Led_Aan[19] = 0, Led_Aan[20] = 0, Led_Aan[21] = 0, Led_Aan[22] = 0 ; Led_Aan[27] = 0, Led_Aan[34] = 0, Led_Aan[35] = 0, Led_Aan[84] = 0, Led_Aan[97] = 0 ; Led_Aan[98] = 0, Led_Aan[99] = 0, Led_Aan[110] = 0, Led_Aan[111] = 0 ; Led_Aan[112] = 0, Led_Aan[113] = 0, Led_Aan[114] = 0, Led_Aan[123] = 0, Led_Aan[124] = 0, Led_Aan[125] = 0 ; Led_Aan[126] = 0, Led_Aan[127] = 0, Led_Aan[128] = 0, Led_Aan[129] = 0 ; NeoPixelsOnOff(); // call NeoPixels On Off delay(250); for (int klop = 0; klop < 15; klop++) { if (big_or_small == true) { ColorColor = ColorRed; big_or_small = false ; } else { ColorColor = ColorBlue; big_or_small = true ; } pixels.setPixelColor( 2, ColorColor); pixels.setPixelColor( 3, ColorColor); pixels.setPixelColor( 10, ColorColor); pixels.setPixelColor( 11, ColorColor); pixels.setPixelColor( 15, ColorColor); pixels.setPixelColor( 18, ColorColor); pixels.setPixelColor( 23, ColorColor); pixels.setPixelColor( 26, ColorColor); pixels.setPixelColor( 28, ColorColor); pixels.setPixelColor( 33, ColorColor); pixels.setPixelColor( 36, ColorColor); pixels.setPixelColor( 41, ColorColor); pixels.setPixelColor( 42, ColorColor); pixels.setPixelColor( 48, ColorColor); pixels.setPixelColor( 49, ColorColor); pixels.setPixelColor( 55, ColorColor); pixels.setPixelColor( 56, ColorColor); pixels.setPixelColor( 57, ColorColor); pixels.setPixelColor( 68, ColorColor); pixels.setPixelColor( 69, ColorColor); pixels.setPixelColor( 70, ColorColor); pixels.setPixelColor( 71, ColorColor); pixels.setPixelColor( 82, ColorColor); pixels.setPixelColor( 83, ColorColor); pixels.setPixelColor( 85, ColorColor); pixels.setPixelColor( 86, ColorColor); pixels.setPixelColor( 95, ColorColor); pixels.setPixelColor( 96, ColorColor); pixels.setPixelColor( 100, ColorColor); pixels.setPixelColor( 101, ColorColor); pixels.setPixelColor( 108, ColorColor); pixels.setPixelColor( 109, ColorColor); pixels.setPixelColor( 115, ColorColor); pixels.setPixelColor( 116, ColorColor); pixels.setPixelColor( 121, ColorColor); pixels.setPixelColor( 122, ColorColor); pixels.setPixelColor( 130, ColorColor); pixels.setPixelColor( 131, ColorColor); pixels.setPixelColor( 134, ColorColor); pixels.setPixelColor( 135, ColorColor); pixels.setPixelColor( 145, ColorColor); pixels.setPixelColor( 146, ColorColor); pixels.setPixelColor( 147, ColorColor); pixels.setPixelColor( 148, ColorColor); pixels.setPixelColor( 160, ColorColor); pixels.setPixelColor( 161, ColorColor); pixels.show(); delay(150); } ClockColor = TempClockColor; // restore status fix or rainbow ColorColor = pixels.Color(FixColorRed, FixColorGreen, FixColorBlue ); // fix color for NeoPixels } //-------------------------------------------- // *** end void Hart *** //-------------------------------------------- //-------------------------------------------- // *** einde code *** //--------------------------------------------