#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define LDR_PIN A0
#define LED_hijau 13
#define LED_biru 12
#define LED_merah 11
#define LED_kuning 10
#define LED_putih 9
#define LED_ungu 8
#define LED_pink 6
#define tombol 7
const float GAMMA = 0.7;
const float RL10 = 50;
int status = 0 ;
int cahaya = 0 ;
int gerak = 0 ;
LiquidCrystal_I2C lcd (0x27, 20, 4);
void setup() {
// put your setup code here, to run once:
//lcd awal
lcd.init ();
lcd.backlight ();
lcd.setCursor(3, 1);
lcd.print("LAMPU OTOMATIS");
//lcd selesai
//INPUT awal
pinMode(LDR_PIN, INPUT);
Serial.begin(9600);
pinMode(4, INPUT);
pinMode (tombol, INPUT);
//INPUT selesai
//OUTPUT awal
pinMode (LED_hijau, OUTPUT);
pinMode (LED_biru, OUTPUT);
pinMode (LED_merah, OUTPUT);
pinMode (LED_kuning, OUTPUT);
pinMode (LED_putih, OUTPUT);
pinMode (LED_ungu, OUTPUT);
pinMode (LED_pink, OUTPUT);
for(int x=9; x<=13; x++)
{
pinMode(x, OUTPUT);
}
//OUTPUT selesai
//LED awal
digitalWrite (LED_hijau, LOW);
digitalWrite (LED_biru, LOW);
digitalWrite(LED_merah, LOW);
digitalWrite (LED_kuning, LOW);
digitalWrite(LED_putih, LOW);
digitalWrite (LED_ungu, LOW);
digitalWrite(LED_pink, LOW);
//LED SELESAI
}
void loop() {
// put your main code here, to run repeatedly:
int analogValue = analogRead(A0);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
gerak = digitalRead(4);
//SENSOR TOMBOL awal
if(digitalRead(tombol)==HIGH ){
status ++ ;
delay (500);
}
else if (status == 1){
for (int x=9; x<=13; x++ )
{
digitalWrite(x , HIGH);
delay(500);
digitalWrite(x, LOW);
}
for (int x=13; x>=9; x-- )
{
digitalWrite(x , HIGH);
delay(500);
digitalWrite(x, LOW);
}
}
else if (status == 2)
{
status = 0 ;
}
else
{
digitalWrite(status == 1, LOW);
}
//SENSOR TOMBOL selesai
//sensor CAHAYA awal
if (lux < 60)
{
Serial.print("mati");
digitalWrite(LED_hijau, LOW);
digitalWrite(LED_biru, LOW);
digitalWrite(LED_merah, LOW);
digitalWrite(LED_kuning, LOW);
digitalWrite(LED_putih, LOW);
}
if (lux >= 60 && lux < 160)
{
Serial.print("Cahaya Gelap ");
digitalWrite(LED_hijau, HIGH);
digitalWrite(LED_biru, LOW);
digitalWrite(LED_merah, LOW);
digitalWrite(LED_kuning, LOW);
digitalWrite(LED_putih, LOW);
}
if (lux >= 160 && lux < 260)
{
Serial.print("Cahaya redup ");
digitalWrite(LED_hijau, LOW);
digitalWrite(LED_biru, HIGH);
digitalWrite(LED_merah, LOW);
digitalWrite(LED_kuning, LOW);
digitalWrite(LED_putih, LOW);
}
if (lux >= 260 && lux < 360)
{
Serial.print("Cahaya Normal ");
digitalWrite(LED_hijau, LOW);
digitalWrite(LED_biru, LOW);
digitalWrite(LED_merah, HIGH);
digitalWrite(LED_kuning, LOW);
digitalWrite(LED_putih, LOW);
}
if (lux >= 360 && lux < 460)
{
Serial.print("Cahaya agak terang ");
digitalWrite(LED_hijau, LOW);
digitalWrite(LED_biru, LOW);
digitalWrite(LED_merah, LOW);
digitalWrite(LED_kuning, HIGH);
digitalWrite(LED_putih, LOW);
}
if (lux >= 460)
{
Serial.print("Cahaya Tereng ");
digitalWrite(LED_hijau, LOW);
digitalWrite(LED_biru, LOW);
digitalWrite(LED_merah, LOW);
digitalWrite(LED_kuning, LOW);
digitalWrite(LED_putih, HIGH);
}
Serial.print("lux: ");
Serial.println(lux);
delay(400);
//sensor CAHAYA selesai
//sensor gerakan awal
if (gerak == HIGH)
{
Serial.println("Ada Gerakan ");
digitalWrite(LED_ungu, HIGH);
digitalWrite(LED_pink, LOW);
}
if (gerak == LOW)
{
Serial.println("tidak Ada Gerakan ");
digitalWrite(LED_ungu, LOW);
digitalWrite(LED_pink, HIGH);
}
delay(700);
//sensor gerakan selesai
}