#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
#include "DHTesp.h"
LiquidCrystal_I2C lcd2(0x28,16,2);
DHTesp dhtSensor;
int RED = 18;
int GREEN = 19;
int BLUE = 17;
#include <Adafruit_NeoPixel.h>
LiquidCrystal_I2C lcd3(0x29, 16, 2);
#define NEOPIXEL_PIN 5
#define NEOPIXEL_NUM 54
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NEOPIXEL_NUM, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
void setup () {
Serial.begin(115200);
lcd.init();
lcd.backlight();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
lcd2.init();
lcd2.backlight();
dhtSensor.setup(13,DHTesp::DHT22);
lcd3.init();
lcd3.backlight();
strip.begin();
strip.show();
strip.setBrightness(100);
}
void loop () {
DateTime now = rtc.now();
Serial.print(String (now.hour())+':'+String(now.minute())+':'+String(now.second()));
//Serial.print(':');
//Serial.print(now.minute(), DEC);
//Serial.print(':');
//Serial.print(now.second(), DEC);
//Serial.println();
lcd.setCursor(5,0);
lcd.print("CLOCK");
lcd.setCursor(4,1);
lcd.print(String (now.hour())+':'+String(now.minute())+':'+String(now.second()));
delay(1000);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
lcd2.setCursor(0, 0);
lcd2.print("TEMP " + String(data.temperature, 2) + "C");
lcd2.setCursor(0, 1);
lcd2.print("HMDTY " + String(data.humidity, 1) + "%");
uint32_t color;
lcd2.setCursor(0, 0);
lcd2.print("TEMP " + String(data.temperature, 2) + "C");
lcd2.setCursor(0, 1);
lcd2.print("HMDTY " + String(data.humidity, 1) + "%");
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, color);
strip.show();
delay(50);
}
if (data.temperature>35){
Serial.println("Hot!");
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
color = strip.Color(255, 0, 0);
delay(1000);
}
if (data.temperature<10){
Serial.println("Cold!");
digitalWrite(RED, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, HIGH);
color = strip.Color(0, 0, 255);
delay(1000);
}
if (data.temperature>11 && data.temperature<34) {
Serial.println("Normal");
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
color = strip.Color(0, 255, 0);
delay(1000);
}
}
void neoPixelAnimation(uint32_t color) {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
delay(50);
}
}