I am trying to set up this LED light that I build using the LEDFader library (Under Construction) but am having some issues. Here is my code:
#include <LEDFader.h>
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include "DHT.h" //DHT library
#include "RTClib.h"
#define LED_PINc 9
#define LED_PINw 6
#define LED_PINb 10
#define LED_PINr 11
#define FADE_TIME1 60000
#define FADE_TIME2 2000
LEDFader ledr;
LEDFader ledb;
LEDFader ledc;
LEDFader ledw;
DHT dht1; // define dht1 as a DHT
DHT dht2; // define dht2 as a DHT
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7
//variables for light control
int r = 15;
int b = 15;
int c = 15;
int w = 15;
int rstep = 10;
int bstep = 10;
int cstep = 10;
int wstep = 10;
int rday = 255;
int bday = 255;
int cday = 255;
int wday = 255;
RTC_DS1307 rtc;
void setup() {
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
lcd.begin(16, 2);
lcd.setBacklight(GREEN);
dht1.setup(7); // assign dht1 to pin 2
dht2.setup(8); // assign dht2 to pin 4
//outlet control
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
ledr = LEDFader(LED_PINr);
ledb = LEDFader(LED_PINb);
ledc = LEDFader(LED_PINc);
ledw = LEDFader(LED_PINw);
}
uint8_t i=0;
void loop() {
DateTime now = rtc.now();
ledr.update();
ledb.update();
ledc.update();
ledw.update();
dht1.getMinimumSamplingPeriod();
float humidity = dht1.getHumidity();
float temperature = dht1.getTemperature();
//setup dht1
dht2.getMinimumSamplingPeriod();
float humidity2 = dht2.getHumidity();
float temperature2 = dht2.getTemperature();
//setup dht2
uint8_t buttons = lcd.readButtons();
//red led sunrise
if (!ledr.is_fading() && now.hour() >= 8 && now.hour() <= 9) {
ledr.fade(r, FADE_TIME1);
if (r < rday) {
r = r + rstep;
}
}
//blue led sunrise
if (!ledb.is_fading() && now.hour() >= 8 && now.hour() <= 9) {
ledb.fade(b, FADE_TIME1);
if (b < bday) {
b = b + bstep;
}
}
//cool white led sunrise
if (!ledc.is_fading() && now.hour() >= 8 && now.hour() <= 9) {
ledc.fade(c, FADE_TIME1);
if (c < cday) {
c = c + cstep;
}
}
//warm white led sunrise
if (!ledw.is_fading() && now.hour() >= 8 && now.hour() <= 9) {
ledw.fade(w, FADE_TIME1);
if (w < wday) {
w = w + wstep;
}
}
//led daytime setting
if (!ledw.is_fading() && now.hour() >= 9 && now.hour() <= 20) {
ledr.fade(rday, FADE_TIME2);
ledb.fade(bday, FADE_TIME2);
ledc.fade(cday, FADE_TIME2);
ledw.fade(wday, FADE_TIME2);
}
//red led sunset
if (!ledr.is_fading() && now.hour() >= 20 && now.hour() <= 21) {
ledr.fade(r, FADE_TIME1);
if (r < rday) {
r = r - rstep;
}
}
//blue led sunset
if (!ledb.is_fading() && now.hour() >= 20 && now.hour() <= 21) {
ledb.fade(b, FADE_TIME1);
if (b < bday) {
b = b - bstep;
}
}
//cool white led sunset
if (!ledc.is_fading() && now.hour() >= 20 && now.hour() <= 21) {
ledc.fade(c, FADE_TIME1);
if (c < cday) {
c = c - cstep;
}
}
//warm white led sunset
if (!ledw.is_fading() && now.hour() >= 20 && now.hour() <= 21) {
ledw.fade(w, FADE_TIME1);
if (w < wday) {
w = w - wstep;
}
}
//turn on outlet 1 if humidity drops below 60%
if ((humidity + humidity2)/2 <= 60) {
digitalWrite(2, LOW);
}
if ((humidity + humidity2)/2 >= 60) {
digitalWrite(2, HIGH);
}
//display humidity
lcd.setCursor(0,0);
lcd.print("Humidity #1 ");
lcd.print(humidity, 1);
lcd.setCursor(0,1);
lcd.print("Humidity #2 ");
lcd.print(humidity2, 1);
}
The example code for that library seems to work well but in my code the lights seem to step in intensity and disregard the FADE_TIME command making the lights turn on much quicker than they should. Can anyone help with this code and is there a better way of doing this?