#include <WiFi.h>
#include <ThingSpeak.h>
#include <LiquidCrystal_I2C.h>
#define ldrPin 2
const float gama = 0.7;
const float rl10 = 50;
LiquidCrystal_I2C lcd(0x27,16,2);
const int echoPin = 2;
const int trigPin = 15;
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define relay 2
long duration;
float distanceCm;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(ldrPin, INPUT);
pinMode(relay, OUTPUT);
lcd.init();
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
Serial.print("Kecerahan = ");
Serial.println(kecerahan);
delay(1000);
// Clears the trigPin
digitalWrite(trigPin, LOW);
delay(1000);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delay(1000);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculate the distance
distanceCm = duration * SOUND_SPEED/2;
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
lcd.setCursor(0,0);
lcd.print("Distance: ");
lcd.print(distanceCm);
lcd.setCursor(0,1);
lcd.print("kecerahan: ");
lcd.print(kecerahan);
if( kecerahan<50 && distanceCm > 100){
digitalWrite(relay, HIGH);
}else if(kecerahan>50 && distanceCm > 100){
digitalWrite(relay, HIGH);
}else if(kecerahan>50 && distanceCm < 100){
digitalWrite(relay, LOW);
}else if(kecerahan<50 && distanceCm < 100){
digitalWrite(relay, LOW);
}
}