#include "RTClib.h" RTC_DS3231 rtc; #include #ifdef AVR #include #endif #define PIN 13 unsigned long previousMillis = 0; const unsigned long interval = 60000; int r; int g; int b; int i; bool flag = 0; #define NUMPIXELS 8 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { #if defined(AVR_ATtiny85) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif pixels.begin(); Serial.begin(57600); #ifndef ESP8266 while (!Serial); #endif if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (1) delay(10); } if (rtc.lostPower()) { Serial.println("RTC lost power, let's set the time!"); rtc.adjust(DateTime(F(DATE), F(TIME))); } rtc.adjust(DateTime(F(DATE), F(TIME))); } void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); if(now.hour() == 2 and flag != 1) { flag = 1; } if(now.hour() >= 4 and flag == 1) { flag = 0; } unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; if(now.hour() == 2 and flag != 1) { flag = 1; } if(now.hour() >= 4 and flag == 1) { flag = 0; } if(now.hour() >= 20 and flag != 1) { r = 1; g = 1; b = 1; } if(now.hour() >= 20 or now.hour() <= 2 and flag != 1) { r = 0; g = 0; b = 0; }else if( now.hour() <= 9 and now.hour() >= 2) { if(now.minute() % 3 == 0) { r += 2; g++; b = 50; } }else if( now.hour() <= 12 and now.hour() >= 9) { if (r != b){ r -= 2;} if (g != b){ g--;} if(now.minute() % 2 == 0) { b = 50; } }else if( now.hour() <= 19 and now.hour() >= 12) { r=g=b=50; }else if( now.hour() <= 20 and now.hour() >= 19) { if (b >= r){ b -= 2;} if(now.minute() % 1 == 0) { r += 2; g++; } } } for(int i=0; i