//LYDIA SYAFIRAWATI
//203510404
//SENSOR JEMURAN OTOMATIS UAS LAB IOT
#define BLYNK_TEMPLATE_ID "TMPL6eqvlQE_s" // ID template Blynk
#define BLYNK_TEMPLATE_NAME "Jemuran Otomatis" // Nama template Blynk
#define BLYNK_AUTH_TOKEN "AcfWxsY0i3Bu9P7Lbr1iMRKikAfdKQQe" // Token otentikasi Blynk
#include <Wire.h>
#include <ESP32Servo.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial // Mengarahkan keluaran debug Blynk ke Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "AcfWxsY0i3Bu9P7Lbr1iMRKikAfdKQQe"; // Token otentikasi Blynk
char ssid[] = "Wokwi-GUEST"; // Nama jaringan WiFi
char pass[] = ""; // Kata sandi WiFi
BlynkTimer timer; // Objek timer Blynk
#define LED 18 // Pin LED
int ldr, hujan; // Variabel untuk sensor LDR dan hujan
Servo jemuran1; // Objek servo untuk mengendalikan jemuran
int SW_state = 0; // Status saklar
BLYNK_WRITE(V0) // Fungsi dipanggil saat nilai pin virtual V0 berubah
{
SW_state = param.asInt(); // Membaca nilai dari pin virtual dan menyimpannya di variabel SW_state
if(SW_state == 1){
digitalWrite(LED, HIGH); // Menghidupkan LED jika sensor aktif
Serial.println("SENSOR SEDANG AKTIF"); // Menampilkan pesan di Serial Monitor
Blynk.virtualWrite(V0, HIGH); // Menyampaikan informasi ke aplikasi Blynk bahwa sensor aktif
} else {
digitalWrite(LED, LOW); // Mematikan LED jika sensor mati
Serial.println("SENSOR SEDANG MATI"); // Menampilkan pesan di Serial Monitor
Blynk.virtualWrite(V0, LOW); // Menyampaikan informasi ke aplikasi Blynk bahwa sensor mati
}
int pinValue = param.asInt();
if(pinValue== 1){
jemuran1.write(0); // Menggerakkan servo ke posisi tertutup jika nilai pin virtual adalah 1
}
}
void setup()
{
Serial.begin(115200); // Inisialisasi Serial Monitor
pinMode(LED, OUTPUT); // Menetapkan pin LED sebagai output
Blynk.begin(auth, ssid, pass); // Menghubungkan ke Blynk dengan informasi otentikasi dan jaringan WiFi
jemuran1.attach(25); // Menghubungkan servo ke pin 25
}
void loop()
{
timer.run(); // Menjalankan timer Blynk
Blynk.run(); // Menjalankan operasi Blynk
ldr = map(analogRead(35), 0, 4096, 100, 0); // Membaca nilai analog dari sensor LDR dan melakukan pemetaan
hujan = map(analogRead(34), 0, 4096, 0, 100); // Membaca nilai analog dari sensor hujan dan melakukan pemetaan
if(ldr < 30 || hujan > 40){
jemuran1.write(180); // Menggerakkan servo ke posisi tertutup jika kondisi tertentu terpenuhi
Serial.println("Jemuran Tertutup"); // Menampilkan pesan di Serial Monitor
}}