#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27,16,2);
const float GAMMA = 0.7;
const float RL10 = 50;
#define lampu1 2
#define lampu2 6
#define lampu3 10
#define lampu4 11
#define lampu5 12
#define lampu6 13
#define lampu7 3
#define lampu8 4
#define lampu9 7
void setup()
{
pinMode(lampu1, OUTPUT);
pinMode(lampu2, OUTPUT);
pinMode(lampu3, OUTPUT);
pinMode(lampu4, OUTPUT);
pinMode(lampu5, OUTPUT);
pinMode(lampu6, OUTPUT);
pinMode(lampu7, OUTPUT);
pinMode(lampu8, OUTPUT);
pinMode(lampu9, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor (2,0);
lcd.print("Lampu Jalan");
lcd.setCursor (3,1);
lcd.print("Otomatis");
delay (1000);
}
void loop()
{
//untuk Sensor 1:
int analogValue = analogRead(A7);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
//untuk Sensor 2:
int analogValue2 = analogRead(A0);
float voltage2 = analogValue2 / 1024. * 5;
float resistance2 = 2000 * voltage2 / (1 - voltage2 / 5);
float lux2 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance2, (1 / GAMMA));
//untuk Sensor 3:
int analogValue3 = analogRead(A3);
float voltage3 = analogValue3 / 1024. * 5;
float resistance3 = 2000 * voltage3 / (1 - voltage3 / 5);
float lux3 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance3, (1 / GAMMA));
Serial.print("Lux Sensor 1: ");
Serial.println(lux);
Serial.print("Lux Sensor 2: ");
Serial.println(lux2);
Serial.print("Lux Sensor 3: ");
Serial.println(lux3);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("S1:");
lcd.print (lux);
lcd.setCursor (7,0);
lcd.print(" S2:");
lcd.print (lux2);
lcd.setCursor (0,1);
lcd.print("S3:");
lcd.print (lux3);
//Sensor 1:
if (lux <= 50)
{
digitalWrite(lampu1, HIGH);
digitalWrite(lampu2, HIGH);
digitalWrite(lampu3, HIGH);
}
else if (lux > 50 && lux <= 100)
{
digitalWrite(lampu1, HIGH);
digitalWrite(lampu2, HIGH);
digitalWrite(lampu3, LOW);
}
else if (lux > 100 && lux <= 150)
{
digitalWrite(lampu1, HIGH);
digitalWrite(lampu2, LOW);
digitalWrite(lampu3, LOW);
}
else if (lux > 150 )
{
digitalWrite(lampu1, LOW);
digitalWrite(lampu2, LOW);
digitalWrite(lampu3, LOW);
}
//Sensor 2:
if (lux2 <= 50)
{
digitalWrite(lampu4, HIGH);
digitalWrite(lampu5, HIGH);
digitalWrite(lampu6, HIGH);
}
else if (lux2 > 50 && lux2 <= 100)
{
digitalWrite(lampu4, HIGH);
digitalWrite(lampu5, HIGH);
digitalWrite(lampu6, LOW);
}
else if (lux2 > 100 && lux2 <= 150)
{
digitalWrite(lampu4, HIGH);
digitalWrite(lampu5, LOW);
digitalWrite(lampu6, LOW);
}
else if (lux2 > 150 )
{
digitalWrite(lampu4, LOW);
digitalWrite(lampu5, LOW);
digitalWrite(lampu6, LOW);
}
//Sensor 3:
if (lux3 <= 50)
{
digitalWrite(lampu7, HIGH);
digitalWrite(lampu8, HIGH);
digitalWrite(lampu9, HIGH);
}
else if (lux3 > 50 && lux3 <= 100)
{
digitalWrite(lampu7, HIGH);
digitalWrite(lampu8, HIGH);
digitalWrite(lampu9, LOW);
}
else if (lux3 > 100 && lux3 <= 150)
{
digitalWrite(lampu7, HIGH);
digitalWrite(lampu8, LOW);
digitalWrite(lampu9, LOW);
}
else if (lux3 > 150 )
{
digitalWrite(lampu7, LOW);
digitalWrite(lampu8, LOW);
digitalWrite(lampu9, LOW);
}
delay(1000);
}