/*
Example of BH1750 library usage.
This example initialises the BH1750 object using the default high resolution
continuous mode and then makes a light level reading every second.
Connections
- VCC to 3V3 or 5V
- GND to GND
- SCL to SCL (A5 on Arduino Uno, Leonardo, etc or 21 on Mega and Due, on
esp8266 free selectable)
- SDA to SDA (A4 on Arduino Uno, Leonardo, etc or 20 on Mega and Due, on
esp8266 free selectable)
- ADD to (not connected) or GND
ADD pin is used to set sensor I2C address. If it has voltage greater or equal
to 0.7VCC voltage (e.g. you've connected it to VCC) the sensor address will be
0x5C. In other case (if ADD voltage less than 0.7 * VCC) the sensor address
will be 0x23 (by default).
*/
#include <BH1750.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define in1 5 //pin yg connect ke in1 relay
#define in2 6 //pin yg connect ke in2 relay
LiquidCrystal_I2C lcd(0x27,16,2);
BH1750 lightMeter;
const int trigPin = 9;
const int echoPin = 10;
const int redLedPin = 13;
const int greenLedPin = 11;
const int blueLedPin = 7;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(blueLedPin, OUTPUT);
pinMode(in1, OUTPUT);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Salwa Adfriza R");
lcd.setCursor(1, 1);
lcd.print("24040120120027");
delay(2000);
lcd.clear();
// Initialize the I2C bus (BH1750 library doesn't do this automatically)
Wire.begin();
// On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);
// For Wemos / Lolin D1 Mini Pro and the Ambient Light shield use
// Wire.begin(D2, D1);
lightMeter.begin();
Serial.println(F("BH1750 Test begin"));
//lcd.backlight();
//lcd.setCursor(1,0);
//lcd.print("Selamat Datang");
//delay(2000);
//lcd.clear();
//lcd.print("Created by :");
//lcd.setCursor(0,1);
//lcd.print("SalwaA");
//delay(2000);
lcd.clear();
}
void loop() {
float lux = lightMeter.readLightLevel();
if (lux <= 10) {
Serial.println(lightMeter.readLightLevel()); // return curent distance in serial
lcd.setCursor(0,0);
lcd.print("lux: ");
lcd.setCursor(6,0);
lcd.print(lightMeter.readLightLevel());
lcd.setCursor(10,0);
lcd.print("lx");
digitalWrite(in1, LOW); //mati
digitalWrite(in2, LOW);
digitalWrite(redLedPin, LOW); // nyala
delay(500);
}
if (lux > 10 && lux <= 20) {
Serial.println(lightMeter.readLightLevel()); // return curent distance in serial
lcd.setCursor(0,0);
lcd.print("lux: ");
lcd.setCursor(6,0);
lcd.print(lightMeter.readLightLevel());
lcd.setCursor(10,0);
lcd.print("lx");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(greenLedPin, LOW); //nyala
delay(500);
}
if (lux > 20 && lux <= 30) {
Serial.println(lightMeter.readLightLevel()); // return curent distance in serial
lcd.setCursor(0,0);
lcd.print("lux: ");
lcd.setCursor(6,0);
lcd.print(lightMeter.readLightLevel());
lcd.setCursor(10,0);
lcd.print("lx");
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(blueLedPin, LOW);
delay(500);
}
if (lux > 30 && lux <= 50) {
Serial.println(lightMeter.readLightLevel()); // return curent distance in serial
lcd.setCursor(0,0);
lcd.print("lux: ");
lcd.setCursor(6,0);
lcd.print(lightMeter.readLightLevel());
lcd.setCursor(10,0);
lcd.print(";x");
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(blueLedPin, LOW);
delay(500);
}
if (lux > 50) {
Serial.println(lightMeter.readLightLevel()); // return curent distance in serial
lcd.setCursor(0,0);
lcd.print("lux: ");
lcd.setCursor(6,0);
lcd.print(lightMeter.readLightLevel());
lcd.setCursor(10,0);
lcd.print("lx");
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(redLedPin, LOW);
digitalWrite(blueLedPin, LOW);
digitalWrite(greenLedPin, LOW);
delay(500);
}
else {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(redLedPin, HIGH);
digitalWrite(blueLedPin, HIGH);
digitalWrite(greenLedPin, HIGH);
}
}