#define BLYNK_TEMPLATE_ID "TMPL6PcDyzDtO"
#define BLYNK_TEMPLATE_NAME "Smart Greenhouse IoT"
#define BLYNK_AUTH_TOKEN "MxUZrTchd9B3OzU4z0VQ5utIKiQyvFA6"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define ldrPin 36
int dir_pin = 32;
int step_pin = 33;
int numberOfSteps = 200;
int pulseWidthMicros = 20; // microsecond
int millisbetweenSteps = 60;
LiquidCrystal_I2C lcd(0x27, 16, 2);
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
const float GAMMA = 0.7;
const float RL10 = 50;
void sendData(){
int intensitas = analogRead(ldrPin);
float voltage = intensitas / 4095. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd.setCursor(0,0);
lcd.print("Lux = ");
lcd.print(lux);
Blynk.virtualWrite(V1, intensitas);
Blynk.virtualWrite(V2, lux);
Serial.print("Lux = ");
Serial.println(lux);
if(lux >=10800){
digitalWrite(dir_pin, HIGH);
lcd.setCursor(0,1);
lcd.print("Motor Menyala");
for(int n = 0; n < numberOfSteps; n++) {
digitalWrite(step_pin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(step_pin, LOW);
delay(millisbetweenSteps);
}
delay(1000);
Blynk.virtualWrite(V3, 255);
Blynk.virtualWrite(V4, 0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Lux = ");
lcd.print(lux);
lcd.setCursor(0,1);
lcd.print("Tirai Tutup");
delay(10000);
}
else{
digitalWrite(dir_pin, LOW);
for(int n = 0; n < numberOfSteps; n++) {
lcd.setCursor(0,1);
lcd.print("Motor Menyala");
digitalWrite(step_pin, HIGH);
// delayMicroseconds(pulseWidthMicros); // probably not needed
digitalWrite(step_pin, LOW);
delay(millisbetweenSteps);
}
delay(1000);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Lux = ");
lcd.print(lux);
lcd.setCursor(0,1);
lcd.print("Tirai Buka");
delay(10000);
}
}
BlynkTimer timer;
void setup(){
pinMode(ldrPin, INPUT);
Serial.begin(115200);
delay(1000);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
lcd.init();
lcd.backlight();
timer.setInterval(1L, sendData);
pinMode(dir_pin, OUTPUT);
pinMode(step_pin, OUTPUT);
}
void loop(){
Blynk.run();
timer.run();
}