#define BLYNK_TEMPLATE_ID "TMPL6r2GH-9hs"
#define BLYNK_TEMPLATE_NAME "UTPIOT"
#define BLYNK_AUTH_TOKEN "Om_feHSO4vdiYcjEEhXvxSS81dfveVeP"
#define BLYNK_PRINT Serial
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define echo 12
#define trig 13
int pinbuz = 5;
int chanbuz = 0;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
bool buzzerState = false;
bool labelState = false;
void hidupBuzzer() {
tone(pinbuz, 200);
delay(1000);
tone(pinbuz, 250);
delay(1000);
}
void matiBuzzer() {
noTone(pinbuz);
}
void notifhama(){
Blynk.virtualWrite(V4,"ADA HAMAAAAA");
}
void notifaman(){
Blynk.virtualWrite(V4,"Aman");
}
void notifmati(){
Blynk.virtualWrite(V4,"Mati");
}
void updateDisplay(int distance) {
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 2);
if(labelState){
if (distance <= 200) {
oled.print("Ada hama di jarak : ");
oled.print(distance);
oled.println(" cm");
if (buzzerState) {
hidupBuzzer();
}notifhama();
} else {
oled.print("Kondisi aman");
matiBuzzer();
notifaman();
}
}else{
notifmati();
}
oled.display();
}
BLYNK_WRITE(V3) {
int pin_value = param.asInt();
if (pin_value == 1) {
buzzerState = true;
labelState = true;
} else {
buzzerState = false;
labelState = false;
matiBuzzer();
}
}
void setup() {
Serial.begin(115200);
Serial.println("Hello world");
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
Serial.println(F("oled failed"));
while (1);
};
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
ledcAttachPin(pinbuz, chanbuz);
Blynk.begin(auth, ssid, pass);
}
void loop() {
// Membaca jarak dari sensor ultrasonik
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
int waktu = pulseIn(echo, HIGH);
int jarak = waktu * 0.034 / 2;
updateDisplay(jarak);
Blynk.run();
}