- #include <NTPtimeESP.h>
- #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 <Adafruit_NeoPixel.h>
- #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();
- }