// ============================================================================================================================= /* 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 Nu nog handmatig in te stellen maar wordt binnenkort mogelijk via afstandsbediening Now set manually but will soon be possible via remote control 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 */ // =============================================================================================================================== //--------------------------------------------- // ARDUINO Includes defines and initialysations //--------------------------------------------- #include #include #include #include #include "DCF77.h" //#include "Time.h" //-------------------------------------------- // ARDUINO Definition //-------------------------------------------- //#define secondeflash // seconds will flash or not ( //* ) #define DCF_PIN 2 // 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]; bool oldState = HIGH; // for switch // boolean state; // need for 1 Hz pulse int Led_Aan[168]; // between array uint32_t FunkBlue = pixels.Color(0, 0, 125); uint32_t FunkGreen = pixels.Color(0, 125, 0); uint32_t FunkRed = pixels.Color(125, 0, 0); uint32_t FunkBlack = pixels.Color(0, 0, 0); uint32_t FunkColor; int initFunk = 1; byte ClockColor = 0; // 0 = rainbow and 1 = fix color of the NeoPixels byte RainbowSpec = 255; // 255 = maximum and 0 = minimum number of colors in the rainbow spectrum 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 newTime ; // storage of new second int oldTime ; // 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) int RADAR_In = 1; // begin waarde is aan int LDRValue = 85; // result of reading the analog pin int BerLDRValue = 85; // Berekende waarde int xy = 0; byte knipper = 0 ; // seconde bepalen byte SecKnip = 0 ; // seconde 0 = niet en 1 = wel laten knipperen float j = 1; // LED on int d = 1; // d = j as integer 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 uint32_t SmileyColor1 = pixels.Color(0, 0, 0); // black color and brightness of the smiley here to adjust uint32_t SmileyColor2 = pixels.Color(150, 150, 150); // white uint32_t SmileyColor3 = pixels.Color(110, 110, 0); // yellow uint32_t SmileyColor4 = pixels.Color(0, 0, 140); // blue uint32_t SmileyColor5 = pixels.Color(140, 0, 0); // red 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 s = 0; // loop across the LED array smiley byte SmileyOnOff = 1; // 0 = smiley off 1 = smiley on time_t time; DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT); //-------------------------------- // *** 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 (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 newTime = dt.second ; //storage of new second oldTime = dt.second ; //storage from previous second // 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() { waiting: // loop waiting 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; } 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 // Call BrightnessControl routine BrightnessControl(); // helderheid wordt altijd berekend goto waiting; // end of the loop 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 */ newTime = dt.second ; if (newTime == oldTime) { // Geen actie voor klok als er geen nieuwe seconde is , maar wel andere acties afwerken // Call BrightnessControl routine BrightnessControl(); f = 0; e = 0; // teller voor aantal leds dat aan is } else { //Call ledaanzeten, welke leds moeten worden aangezet ledaanzeten(); e = 0; for (int k = 0; k < (NUMPIXELS - 1); k++) { // loop over het led array 168 posities, maar 167 telt niet mee omdat 154 altijd aan is if (Led_Aan[k] == 1 ) { e = e + 1; // tellen hoeveel leds aan zijn } } oldTime = newTime; // oude tijd updaten met nieuwe seconde Power_On_Counter ++; // update on time = Power_On_Counter = Power_On_Counter + 1 for (int k = 0; k < NUMPIXELS; k++) { if (Led_Aan[k] == 1 ) { // led die aan moet zijn ook aan zetten, dus ook 167 f = f + 1; 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(); } } //Call zeroleds, tussen array vullen met nullen zeroleds(); } if (DCF77OnOff > 0 && dt.hour == DCFcheckuur && dt.minute == DCFcheckmin) { // eenmaal per dag tijd synchroniseren met DCF77 tijd // Call DCF77 routine DCF77Check(); } } //-------------------------------------------- // *** 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 == 0 ) { // rainbow color pixels.setPixelColor(m, Wheel(((f * RainbowSpec/ e) + d) & 255)); // m = echte adres van de led 0-167 // f = alternatief led nr in de rij van het aantal dat aan is ipv het aantal leds 168 j = j + 0.1; // e = aantal leds dat aan is if (j > 256) { j = j - 256; // d = j als integer } d = j; pixels.show(); delay(wait); } else { // fix color pixels.setPixelColor(m, FixColorRed, FixColorGreen, FixColorBlue ); // 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() { DCF.Start(); // start the DCF-module // Serial.println("Start DCF77 Check routine. "); // delay(100); // Serial.println("Waiting for DCF77 time ... "); // Serial.println("It will take at least 2 minutes until a first update can be processed."); zetFunk(); //funk led op 1 in tussen array { if (initFunk == 1) { FunkColor = FunkBlue; //zet kleur blauw funk ontvangen } else { FunkColor = FunkBlack; // leds niet aanzetten } } aanFunk(); //funk leds aanzetten { for (int i = 0; i < 120; i++) { time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is available if (DCFtime != 0) { Serial.println("Time is updated"); RTC.adjust(DCFtime); setTime(DCFtime); delay(1000); { if (initFunk == 1) { FunkColor = FunkGreen; // zet kleur groen funk OK } else { FunkColor = FunkBlack; // leds niet aanzetten } } aanFunk(); //funk leds aanzetten initFunk = 0; //funk leds alleen aan bij opstart DCF.Stop(); delay(10000); break; } else { delay(5000); } } } { if (initFunk == 1) { FunkColor = FunkRed; // zet kleur rood funk niet OK } else { FunkColor = FunkBlack; // leds niet aanzetten } } aanFunk(); //funk leds aanzetten initFunk = 0; //funk leds alleen aan bij opstart DCF.Stop(); delay(10000); } //-------------------------------------------- // *** einde void DCF77Check *** //-------------------------------------------- //-------------------------------------------- // *** begin void aanFunk *** //-------------------------------------------- void aanFunk() { for (int k = 0; k < NUMPIXELS; k++) { // loop over het led array 168 posities if (Led_Aan[k] == 1 ) { // welke leds moeten aan zijn pixels.setPixelColor(k, FunkColor); // led aan zetten pixels.show(); // This sends the updated pixel color to the hardware. } else { pixels.setPixelColor(k, pixels.Color(0, 0, 0)); // rest van de leds uit zetten pixels.show(); // This sends the updated pixel color to the hardware. } } } //-------------------------------------------- // *** 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 s = 0; s < NUMPIXELS; s++) { pixels.setPixelColor(s, SmileyColor3); // s = address of the LEDs 0-167 all leds yellow } // make all colors correct pixels.setPixelColor( 0, SmileyColor1); // black pixels.setPixelColor( 1, SmileyColor1); pixels.setPixelColor( 2, SmileyColor1); pixels.setPixelColor( 3, SmileyColor1); pixels.setPixelColor( 10, SmileyColor1); pixels.setPixelColor( 11, SmileyColor1); pixels.setPixelColor( 12, SmileyColor1); pixels.setPixelColor( 13, SmileyColor1); pixels.setPixelColor( 14, SmileyColor1); pixels.setPixelColor( 15, SmileyColor1); pixels.setPixelColor( 26, SmileyColor1); pixels.setPixelColor( 27, SmileyColor1); pixels.setPixelColor( 28, SmileyColor1); pixels.setPixelColor( 41, SmileyColor1); pixels.setPixelColor( 44, SmileyColor2); // white pixels.setPixelColor( 45, SmileyColor2); pixels.setPixelColor( 46, SmileyColor2); pixels.setPixelColor( 51, SmileyColor2); pixels.setPixelColor( 52, SmileyColor2); pixels.setPixelColor( 53, SmileyColor2); pixels.setPixelColor( 58, SmileyColor2); pixels.setPixelColor( 59, SmileyColor4); // eye pupil pixels.setPixelColor( 60, SmileyColor2); pixels.setPixelColor( 65, SmileyColor2); pixels.setPixelColor( 66, SmileyColor4); // eye pupil pixels.setPixelColor( 67, SmileyColor2); pixels.setPixelColor( 72, SmileyColor2); pixels.setPixelColor( 73, SmileyColor2); pixels.setPixelColor( 74, SmileyColor2); pixels.setPixelColor( 79, SmileyColor2); pixels.setPixelColor( 80, SmileyColor2); pixels.setPixelColor( 81, SmileyColor2); pixels.setPixelColor(101 , SmileyColor4); // blue pixels.setPixelColor(102 , SmileyColor4); pixels.setPixelColor(107 , SmileyColor4); pixels.setPixelColor(108 , SmileyColor4); pixels.setPixelColor(116 , SmileyColor4); pixels.setPixelColor(117 , SmileyColor4); pixels.setPixelColor(120 , SmileyColor4); pixels.setPixelColor(121 , SmileyColor4); pixels.setPixelColor(131 , SmileyColor4); pixels.setPixelColor(132 , SmileyColor4); pixels.setPixelColor(133 , SmileyColor4); pixels.setPixelColor(134 , SmileyColor4); pixels.setPixelColor(112 , SmileyColor1); // black pixels.setPixelColor(125 , SmileyColor1); pixels.setPixelColor(126 , SmileyColor1); pixels.setPixelColor(139 , SmileyColor1); pixels.setPixelColor(140 , SmileyColor1); pixels.setPixelColor(141 , SmileyColor1); pixels.setPixelColor(152 , SmileyColor1); pixels.setPixelColor(153 , SmileyColor1); pixels.setPixelColor(154 , SmileyColor1); pixels.setPixelColor(155 , SmileyColor1); pixels.setPixelColor(156 , SmileyColor1); pixels.setPixelColor(157 , SmileyColor1); pixels.setPixelColor(164 , SmileyColor1); pixels.setPixelColor(165 , SmileyColor1); pixels.setPixelColor(166 , SmileyColor1); pixels.setPixelColor(167 , SmileyColor1); 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, SmileyColor5); // red pixels.setPixelColor( 119, SmileyColor5); pixels.setPixelColor( 132, SmileyColor5); pixels.setPixelColor( 133, SmileyColor5); pixels.setPixelColor( 146, SmileyColor5); pixels.setPixelColor( 147, SmileyColor5); pixels.setPixelColor( 160, SmileyColor5); pixels.setPixelColor( 161, SmileyColor5); pixels.show(); delay(400); // time sticking out the tongue pixels.setPixelColor( 118, SmileyColor4); // color return pixels.setPixelColor( 119, SmileyColor4); pixels.setPixelColor( 132, SmileyColor4); pixels.setPixelColor( 133, SmileyColor4); pixels.setPixelColor( 146, SmileyColor3); pixels.setPixelColor( 147, SmileyColor3); pixels.setPixelColor( 160, SmileyColor3); pixels.setPixelColor( 161, SmileyColor3); emo = 0; // reset counter } else { // wink cq knipoog pixels.setPixelColor( 51, SmileyColor3); // yellow pixels.setPixelColor( 52, SmileyColor3); pixels.setPixelColor( 53, SmileyColor3); pixels.setPixelColor( 58, SmileyColor3); pixels.setPixelColor( 59, SmileyColor3); pixels.setPixelColor( 60, SmileyColor3); pixels.setPixelColor( 79, SmileyColor3); pixels.setPixelColor( 80, SmileyColor3); pixels.setPixelColor( 81, SmileyColor3); pixels.show(); delay(400); // time of wink pixels.setPixelColor( 51, SmileyColor2); pixels.setPixelColor( 52, SmileyColor2); pixels.setPixelColor( 53, SmileyColor2); pixels.setPixelColor( 58, SmileyColor2); pixels.setPixelColor( 59, SmileyColor4); pixels.setPixelColor( 60, SmileyColor2); pixels.setPixelColor( 79, SmileyColor2); pixels.setPixelColor( 80, SmileyColor2); pixels.setPixelColor( 81, SmileyColor2); emo++; // count the number of winking } pixels.show(); delay(700); SmileycountTel = 0; // reset counter } //-------------------------------------------- // *** einde void Smiley *** //-------------------------------------------- //-------------------------------------------- // *** begin void getDCFTime *** //-------------------------------------------- unsigned long getDCFTime() { time_t DCFtime = DCF.getTime(); // Indicator that a time check is done if (DCFtime != 0) { Serial.print("X"); } return DCFtime; } //-------------------------------------------- // *** einde void getDCFTime *** //-------------------------------------------- //-------------------------------------------- // *** begin void printDigits *** //-------------------------------------------- void printDigits(int digits) { // utility function for digital clock display: prints preceding colon and leading 0 Serial.print(":"); if (digits < 10) Serial.print('0'); Serial.print(digits); } //-------------------------------------------- // *** einde void printDigits *** //-------------------------------------------- //-------------------------------------------- // *** begin void digitalClockDisplay *** //-------------------------------------------- void digitalClockDisplay() { // digital clock display of the time Serial.println(""); Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.print(" "); Serial.print(day()); Serial.print(" "); Serial.print(month()); Serial.print(" "); Serial.print(year()); Serial.println(); } //-------------------------------------------- // *** einde void digitalClockDisplay *** //-------------------------------------------- //-------------------------------------------- // *** begin void BrightnessControl *** //-------------------------------------------- void BrightnessControl() { LDRValue = analogRead(LDRpin); // read the value from the LDR // calculate the value for the light setting LDRValue = (( LDRValue / 7 ) + 25 ) ; if ( xy < 5 ) { xy = xy + 1; } else if ( LDRValue > BerLDRValue ) { BerLDRValue = BerLDRValue + 1 ; xy = 0; } else if ( LDRValue < BerLDRValue ) { BerLDRValue = BerLDRValue - 1 ; xy = 0; } else { // nothing to do xy = 0; } /* 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 *** //-------------------------------------------- //-------------------------------------------- // *** einde code *** //--------------------------------------------