#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x27,16,2);
#define dhtpin 6
#define DHTTYPE DHT22
DHT dht(dhtpin, DHTTYPE);
int led1 = 8;
int led2 = 9; //LED
int led3 = 10;
int ldr1 = A0;
String d0, d1, d2, d3;
RTC_DS1307 RTC;
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
// put your setup code here, to run once:
pinMode(ldr1, INPUT);
lcd.init();
lcd.backlight();
lcd.clear();
Serial.begin(9600);
dht.begin();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
RTC.begin();
}
void loop() {
float voltage = analogRead(ldr1) / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd.setCursor(7,1);
lcd.print("lux =");
lcd.print(lux);
delay(500);
if (lux > 500) {
digitalWrite(led1, HIGH);
}
else {
digitalWrite(led1, LOW);
}
float t = dht.readTemperature();
lcd.setCursor(0,0); lcd.print("T: "); lcd.print(t);
if (t > 25){
digitalWrite(led2, HIGH);
}
else {
digitalWrite(led2, LOW);
}
DateTime dt = RTC.now();
String hour = String(dt.hour());
if (hour.length() == 2) {
d0 = String(dt.hour()).substring(0,1);
d1 = String(dt.hour()).substring(1,2);
} else{
d0 = "0";
d1 = String(dt.hour()).substring(0,1);
}
String minute = String(dt.minute());
if(minute.length() == 2) {
d2 = String(dt.minute()).substring(0,1);
d3 = String(dt.minute()).substring(1,2);
}else{
d2 = "0";
d3 = String(dt.minute()).substring(0,1);
}
lcd.setCursor(0,1);
lcd.print(dt.hour()); lcd.print(":"); lcd.print(dt.minute());
}