//Nama : Dilla Natalia, Lailatul Mufidah
//MIM : 2241160036, 2241160014
//Kelas : 2B JARINGAN TELEKOMUNIKASI DIGITAL
//Pendeteksi umur padi
//project IoT menggunakan ESP32 dan sensor HC-SR04 Ultrasonic
//define variabel
// RGB and R, G, B LED demo
const int pinR = 26;
const int pinG = 27;
const int pinB = 14;
const int LDR = 35;
#define trigerPin 12
#define echoPin 13
#define R 26
#define G 27
#define B 14
#define speakerPin 15
#define pitch 262
#define CM_TO_INCH 0.393701
#define alarm 15
#define LDR 35
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
int intensity;
long duration;
float distance;
float distanceInch;
//menghubungkan ke wifi
#include <WiFi.h>
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
WiFiClient alfa;
//memakai library thingspeak
#include <ThingSpeak.h>
unsigned long ChannelID = 2299657;
const char * WriteAPI = "UKK956KQ420BLR9E";
void setup() {
//setup untuk sensor
Serial.begin(115200);
pinMode(trigerPin, OUTPUT);
pinMode(echoPin, INPUT);
//untuk lcd
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setBacklight(HIGH);
//untuk LDR
Serial.println("LDR readings...");
//setup untuk RGB
pinMode(pinR, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(LDR, INPUT);
//setup untuk speaker
pinMode(speakerPin, OUTPUT);
pinMode(alarm, OUTPUT);
//scan WiFi
Serial.println("Scan WiFi...");
int networks = WiFi.scanNetworks();
if(networks == 0){
Serial.println("No WiFi Networks!");
}
else{
Serial.print(networks);
Serial.println("Networks Found!");
for(int i = 0; i < networks; i++)
Serial.println(WiFi.SSID());
delay(10);
}
//menyambungkan ke wifi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println(".");
}
Serial.println("WiFi Connected!");
Serial.println(WiFi.localIP());
//memulai program thingspeak
ThingSpeak.begin(alfa);
}
int readPot(int pin) {
return map(analogRead(pin), 0, 1023, 0, 255);
}
void loop() {
int x = ThingSpeak.writeField (ChannelID, 1, distance, WriteAPI);
//mengambil data dari Thingspeak
intensity = analogRead(LDR);
if (intensity < 250) {
lcd.setCursor(0, 0);
lcd.print("Warna :");
lcd.setCursor(0, 1);
lcd.println("Kuning");
analogWrite(pinR, 255);
analogWrite(pinG, 255);
analogWrite(pinB, 0);
Serial.print("Intensitas : ");
Serial.println(intensity);
Serial.println("Warna : Kuning");
} else if (intensity >= 250 && intensity < 500) {
lcd.setCursor(0, 0);
lcd.print("Warna :");
lcd.setCursor(0, 1);
lcd.println("Hijau");
analogWrite(pinR, 0);
analogWrite(pinG, 255);
analogWrite(pinB, 0);
Serial.print("Intensitas : ");
Serial.println(intensity);
Serial.println("Warna : Hijau");
} else if (intensity >= 500 && intensity < 750) {
lcd.setCursor(0, 0);
lcd.print("Warna :");
lcd.setCursor(0, 1);
lcd.println("Merah");
analogWrite(pinR, 255);
analogWrite(pinG, 0);
analogWrite(pinB, 0);
Serial.print("Intensitas : ");
Serial.println(intensity);
Serial.println("Warna : Merah");
} else if (intensity >= 750) {
lcd.setCursor(0, 0);
lcd.print("Warna :");
lcd.setCursor(0, 1);
lcd.println("Biru");
analogWrite(pinR, 0);
analogWrite(pinG, 0);
analogWrite(pinB, 255);
Serial.print("Intensitas : ");
Serial.println(intensity);
Serial.println("Warna : Biru");
}
//looping sensor (membuat sensor wave)
digitalWrite(trigerPin, LOW);
delayMicroseconds(2);
digitalWrite(trigerPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigerPin, LOW);
//membuat durasi
duration = pulseIn(echoPin, HIGH);
//mengkalkulasi jarak
distance = (duration/2) * 0.0343;
// Convert to inches
distanceInch = distance * CM_TO_INCH;
//concider max width of the door = 200 cm
//analogWrite(pinRGB, readPot(LDR_RGB));
if(distance>10){
lcd.setCursor(0, 2);
lcd.print("Object Terdeteksi");
Serial.println("WARNING!");
Serial.println("distance(cm): " + String(distance));
tone(alarm, pitch); // Plays 262Hz tone for 0.250 seconds
}
else{
lcd.setCursor(0, 2);
lcd.print("Object Undeteksi");
Serial.println("AMAN");
noTone(alarm);
}
delay(2000);
}