Hello all,
This is my first attempt at an Arduino project.
I want to create a code to change RGB lights over the course of the day. The code I created works as is, but I want to add 2 more pieces:
-
I want to start the code at certain times of day (eventually I want to get the time via GPS, but lets walk before we run!)
Something like "if current hour =6, then run 0600 time RGB array". -
More importantly I want to gradually fade from one RGB array color set to the next one. I know I can man-handle each time set, but there has to be a more elegant way to do it.
I want to:
-
Compare Last RGB Array setting to New RGB Array setting.
-
Determine value difference between New RGB Array and Last RGB Array.
-
Increment or decrement by that value difference (or stay the same if values are the same), over X amount of time. I put a delay in there temporarily, but want to get rid of that.
For some reason I cannot upload the code, but I will paste the bulk of it.
I've scoured the internet for codes, tutorials, videos, etc., but I'm running stuck.
Please help, or point me in the right direction! Thanks
#include<TimeLib.h>
int fadeTime_ms = 3000; //increase to increase delay time (ms)
int redled = 3;
int greenled = 5;
int blueled = 6;
int i;
//28 Array settings in all
//00-03:00 3:30 4:00 4:30 5:00 5:30 6:00 6:30 7:00 7:30 7:45 8-830 9:00 9:30 10-1730 18:00 18:30 19:00 19:30 20:00 20:15 20:30 21:00 21:30 22:00 22:30 23:00 23:30
int redarray[] {0, 0, 0, 0, 0, 0, 50, 120, 150, 200, 215, 225, 230, 240, 255, 255, 255, 225, 225, 220, 215, 200, 180, 150, 0, 0, 0, 0};
int greenarray[] {0, 0, 0, 0, 0, 0, 50, 120, 150, 200, 215, 225, 230, 240, 255, 255, 255, 225, 225, 220, 215, 200, 180, 150, 0, 0, 0, 0};
int bluearray[] {100, 110, 120, 130, 140, 150, 150, 150, 150, 150, 150, 150, 200, 225, 255, 200, 150, 150, 150, 150, 150, 150, 150, 140, 130, 120, 115, 100};
// the setup routine runs once when you press reset
void setup() {
Serial.begin(9600);
}
void loop() {
//28 Arrays in all
//Time:0000-0300
analogWrite(redled, redarray[0]);
analogWrite(greenled, greenarray[0]);
analogWrite(blueled, bluearray[0]);
delay(fadeTime_ms);
Serial.println("0300");
//Time:0330
analogWrite(redled, redarray[1]);
analogWrite(greenled, greenarray[1]);
analogWrite(blueled, bluearray[1]);
delay(fadeTime_ms);
Serial.println("0330");
//Time:0400
analogWrite(redled, redarray[2]);
analogWrite(greenled, greenarray[2]);
analogWrite(blueled, bluearray[2]);
delay(fadeTime_ms);
Serial.println("0400");
//Time:0430
analogWrite(redled, redarray[3]);
analogWrite(greenled, greenarray[3]);
analogWrite(blueled, bluearray[3]);
delay(fadeTime_ms);
Serial.println("0430");
//Time:0500
analogWrite(redled, redarray[4]);
analogWrite(greenled, greenarray[4]);
analogWrite(blueled, bluearray[4]);
delay(fadeTime_ms);
Serial.println("0500");
//Time:0530
analogWrite(redled, redarray[5]);
analogWrite(greenled, greenarray[5]);
analogWrite(blueled, bluearray[5]);
delay(fadeTime_ms);
Serial.println("0530");
etc, through 2400 hours