// Arduino_LDR_6
#include <LiquidCrystal_I2C.h>
#define LED_GREEN 2
#define LED_YELLOW 3
#define LED_RED 4
#define LDR A0
#define NTC A1
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
char animate[] = {'-', '\\', '|', '/'};
byte p = 0;
void setup() {
Serial.begin(9600);
pinMode(LDR, INPUT);
pinMode(NTC, INPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_RED, OUTPUT);
lcd.init();
lcd.backlight();
}
int c = 0;
int light;
float temp;
void loop() {
light = map(1024 - analogRead(LDR), 0, 1023, 0, 100);
temp = 1 / (log(1 / (1023. / analogRead(NTC) - 1)) / 3950 + 1.0 / 298.15) - 273.15;
p = (p == 3) ? 0 : ++p;
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Light = ");
lcd.print(light);
lcd.print(" % ");
lcd.setCursor(15, 0);
lcd.print(animate[p]);
lcd.setCursor(0, 1);
lcd.print("Temp = ");
lcd.print(temp);
lcd.print(" C ");
if (light >= 66) {
digitalWrite(LED_RED, HIGH);
} else {
if (light >= 33) {
digitalWrite(LED_YELLOW, HIGH);
} else {
digitalWrite(LED_GREEN, HIGH);
}
}
delay(250);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, LOW);
}