#define BLYNK_TEMPLATE_ID "TMPL6cSRcr9Oy"
#define BLYNK_TEMPLATE_NAME "project"
#define BLYNK_AUTH_TOKEN "R8mVYEX2paCq3J1tX1PVKxo2HjmfjxTy"
#define BLYNK_PRINT Serial
//import library
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <BlynkSimpleEsp32.h>
#define trigPin1 12 // Pin trigger sensor ultrasonik pakan
#define echoPin1 14 // Pin echo sensor ultrasonik pakan
#define echoPin2 5 // Pin echo sensor ultrasonik air
#define servoPinPakan 19 // Pin servo pakan pada ESP32 (sesuaikan dengan pin yang Anda gunakan)
//pin led untuk indikator pakan
#define ledRed 25
#define ledYellow 26
#define ledGreen 27
char auth[] = BLYNK_AUTH_TOKEN; // Auth Token
char ssid[] = "Wokwi-GUEST"; // Nama hotspot yang digunakan
char pass[] = ""; // Password hotspot yang digunakan
WiFiClient alfa;
unsigned long ChannelID_1 = 2366245;
const char *WriteAPI_1 = "EO96SSSU4QA7H9LN";
unsigned long ChannelID_2 = 2366861;
const char *WriteAPI_2 = "O2UBZUMRBK4BVQAF";
Servo servoPakan;
long duration1, distance1;
long duration2, distance2;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void sendSensorDataToBlynk(long distance1, long distance2)
{
Blynk.virtualWrite(V0, distance1); // Virtual pin V0 for Pakan distance
}
void setup()
{
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
servoPakan.attach(servoPinPakan);
// Inisialisasi LCD
lcd.begin(16, 2);
ThingSpeak.begin(alfa);
Blynk.begin(auth, ssid, pass);
}
void updateLCDPakan(long distance1)
{
lcd.clear();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight
lcd.setCursor(0, 0);
lcd.print("Pakan: ");
lcd.print(distance1);
lcd.print(" cm");
}
BLYNK_WRITE(V1)
{
int value = param.asInt();
if (value == 1 && distance1 > 100 && distance1 < 200)
{
servoPakan.write(180); // Buka Pakan
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledGreen, LOW);
delay(1000);
}
else if (value == 0 && distance1 > 100 && distance1 < 200)
{
servoPakan.write(90); // Tutup Pakan
}
}
void loopPakan()
{
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1 / 2) * 0.0343;
Serial.print("Distance Sensor Pakan: ");
Serial.print(distance1);
Serial.println(" cm");
Blynk.virtualWrite(V0, distance1);
int x = ThingSpeak.writeField(ChannelID_1, 1, distance1, WriteAPI_1);
if (distance1 >= 200)
{
digitalWrite(ledRed, HIGH);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, LOW);
servoPakan.write(180);
delay(1000);
}
else if (distance1 > 100 && distance1 < 200)
{
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledGreen, LOW);
delay(1000);
}
else if (distance1 <= 100)
{
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, HIGH);
servoPakan.write(90);
delay(1000);
}
else
{
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, LOW);
}
updateLCDPakan(distance1);
delay(1000);
}
void loop()
{
Blynk.run();
loopPakan();
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4