#include #define DEBUG_ON NTPtime NTPch("time.google.com"); // Choose server pool as required strDateTime dateTime; char *ssid = "TP-Link_BCAC"; // Set you WiFi SSID char *password = "66350491"; #include #define PIN D8 #define NUMPIXELS 144 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); byte second, minute, hour, dayOfWeek, month, year; //Actual words as array variables int WordIts[] = {101, 91, 71,61, -1}; int WordTwenty[] = {103, 93, 83, 73, 63, 53, -1}; int WordMinTen[] = {34, 44, 54, -1}; int WordMinFive[] = {13, 23, 33, 43, -1}; int WordQuarter[] = {82,72, 62, 52, 42, 32, 22, -1}; int WordHalf[] = {104, 94, 84, 74, -1}; int WordTo[] = {14, 4, -1}; int WordPast[] = {105, 95, 85, 75, -1}; int WordFive[] = {67, 57, 47, 37, -1}; int WordOne[] = {106, 96, 86, -1}; int WordTwo[] = {27, 17, 7, -1}; int WordThree[] = {46, 36, 26, 16, 6, -1}; int WordFour[] = {107, 97, 87, 77, -1}; int WordSix[] = {76, 66, 56, -1}; int WordSeven[] = {109, 99, 89, 79, 69, -1}; int WordEight[] = {108, 98, 88, 78, 68, -1}; int WordNine[] = {35, 25, 15, 5, -1}; int WordTen[] = {110, 100, 90, -1}; int WordEleven[] = {58, 48, 38, 28, 18, 8, -1}; int WordTwelve[] = {59, 49, 39, 29, 19, 9, -1}; int WordOclock[] = {60, 50, 40, 30, 20, 10, -1}; int flag = 0; //used for display effects to stop it showing more than once //define colours uint32_t Black = pixels.Color(0, 0, 0); uint32_t White = pixels.Color(255, 255, 255); uint32_t Green = pixels.Color(0, 255, 0); uint32_t Red = pixels.Color(255, 0, 0); uint32_t Gold = pixels.Color(255, 204, 0); uint32_t Grey = pixels.Color(30, 30, 30); uint32_t Blue = pixels.Color(0, 0, 255); uint32_t whiteblue = pixels.Color(255, 255, 255); uint32_t lightblue = pixels.Color(153, 204, 255); uint32_t midblue = pixels.Color(0, 102, 204); uint32_t darkblue = pixels.Color(0, 0, 255); uint32_t Brown = pixels.Color(153, 102, 051); uint32_t Pink = pixels.Color(255, 153, 153); int dayBrightness = 100; int nightBrightness = 50; void setup() { pixels.begin(); blank(); Serial.begin(115200); Serial.println(); Serial.println("Booted"); Serial.println("Connecting to Wi-Fi"); WiFi.mode(WIFI_STA); WiFi.begin (ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println("WiFi connected"); pixels.setBrightness(dayBrightness); test(); //run basic screen tests } void loop() { displayTime(); // display the real-time clock data on the Serial Monitor and the LEDS, // light up "it's" it stays on lightup(WordIts, White); // If it's bang on 5 mins, or 10 mins etc, it's not 'about' so turn it off. if ((minute >= 0) && (minute < 5)) { lightup(WordOclock, White); } else { lightup(WordOclock, Black); } if (minute < 35) { //Set hour if minutes are less than 35 switch (hour) { case 1: case 13: lightup(WordOne, White); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 2: case 14: lightup(WordOne, Black); lightup(WordTwo, White); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 3: case 15: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, White); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 4: case 16: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, White); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 5: case 17: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, White); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 6: case 18: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, White); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 7: case 19: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, White); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 8: case 20: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, White); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 9: case 21: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, White); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 10: case 22: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, White); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 11: case 23: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, White); lightup(WordTwelve, Black); break; case 00: case 12: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, White); break; }// end of case statement if ((minute >= 0) && (minute < 5)) { lightup(WordPast, Black); lightup(WordTo, Black); } else { lightup(WordPast, White); lightup(WordTo, Black); } }//end of if statement else if (minute > 34) { //Set hour if minutes are greater than 34 switch (hour) { case 1: case 13: lightup(WordOne, Black); lightup(WordTwo, White); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 2: case 14: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, White); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 3: case 15: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, White); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 4: case 16: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, White); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 5: case 17: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, White); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 6: case 18: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, White); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 7: case 19: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, White); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 8: case 20: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, White); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 9: case 21: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, White); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; case 10: case 22: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, White); lightup(WordTwelve, Black); break; case 11: case 23: lightup(WordOne, Black); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, White); break; case 00: case 12: lightup(WordOne, White); lightup(WordTwo, Black); lightup(WordThree, Black); lightup(WordFour, Black); lightup(WordFive, Black); lightup(WordSix, Black); lightup(WordSeven, Black); lightup(WordEight, Black); lightup(WordNine, Black); lightup(WordTen, Black); lightup(WordEleven, Black); lightup(WordTwelve, Black); break; }// end of case statement lightup(WordPast, Black); lightup(WordTo, White); } // end of if statement to test for greater than 34 if ((minute >= 5) && (minute < 10)) { lightup(WordMinFive, White); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 10) && (minute < 15)) { lightup(WordMinFive, Black); lightup(WordMinTen, White); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 15) && (minute < 20)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, White); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 20) && (minute < 25)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, White); lightup(WordHalf, Black); } else if ((minute >= 25) && (minute < 30)) { lightup(WordMinFive, White); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, White); lightup(WordHalf, Black); } else if ((minute >= 30) && (minute < 35)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, White); } else if ((minute >= 35) && (minute < 40)) { lightup(WordMinFive, White); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, White); lightup(WordHalf, Black); } else if ((minute >= 40) && (minute < 45)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, White); lightup(WordHalf, Black); } else if ((minute >= 45) && (minute < 50)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, White); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 50) && (minute < 55)) { lightup(WordMinFive, Black); lightup(WordMinTen, White); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 55) && (minute <= 59)) { lightup(WordMinFive, White); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, Black); } else if ((minute >= 0) && (minute < 5)) { lightup(WordMinFive, Black); lightup(WordMinTen, Black); lightup(WordQuarter, Black); lightup(WordTwenty, Black); lightup(WordHalf, Black); } } void displayTime() { readtime(&second, &minute, &hour, &dayOfWeek, &month, &year); if (hour < 10) { Serial.print("0"); } Serial.print(hour); Serial.print(":"); if (minute < 10) { Serial.print("0"); } Serial.println(minute); delay(200); } void readtime(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *month, byte *year) { dateTime = NTPch.getNTPtime(0.0, 1); if(dateTime.valid){ *second = dateTime.second; *minute = dateTime.minute; *hour = dateTime.hour; *dayOfWeek = dateTime.dayofWeek; *month = dateTime.month; *year = dateTime.year; } } void lightup(int Word[], uint32_t Colour) { for (int x = 0; x < pixels.numPixels() + 1; x++) { if (Word[x] == -1) { pixels.show(); break; } //end of if loop else { pixels.setPixelColor(Word[x], Colour); pixels.show(); } // end of else loop } //end of for loop } void blank() { //clear the decks for (int x = 0; x < NUMPIXELS; ++x) { pixels.setPixelColor(x, Black); } pixels.show(); } void wipe() { for (int x = 0; x < NUMPIXELS; ++x) { pixels.setPixelColor(x, Blue); delay(10); pixels.show(); } delay(50); for (int x = NUMPIXELS; x > -1; --x) { pixels.setPixelColor(x, Black); delay(10); pixels.show(); } for (int x = 0; x < NUMPIXELS; ++x) { pixels.setPixelColor(x, Green); delay(10); pixels.show(); } delay(50); for (int x = NUMPIXELS; x > -1; --x) { pixels.setPixelColor(x, Black); delay(10); pixels.show(); } for (int x = 0; x < NUMPIXELS; ++x) { pixels.setPixelColor(x, Red); delay(10); pixels.show(); } delay(50); for (int x = NUMPIXELS; x > -1; --x) { pixels.setPixelColor(x, Black); delay(10); pixels.show(); } for (int x = 0; x < NUMPIXELS; x = x + 2) { pixels.setPixelColor(x, Red); delay(50); pixels.show(); } delay(100); blank(); } void test() { blank(); wipe(); blank(); // flash(); } void flash() { blank(); for (int y = 0; y < 10; ++y) { for (int x = 0; x < NUMPIXELS; x = x + 2) { pixels.setPixelColor(x, Pink); } pixels.setBrightness(dayBrightness); pixels.show(); delay(50); blank(); delay(50); for (int x = 1; x < NUMPIXELS; x = x + 2) { pixels.setPixelColor(x, Pink); } pixels.setBrightness(dayBrightness); pixels.show(); delay(50); blank(); delay(50); } blank(); }