/*
UAS Praktikum IoT
Anggota Kelompok :
1. Ahmad Rizky Fadhilah
2. Aldly Adhesidofa
3. M. Alvin Jonathan
4. Rahmat Ardiansyah
5. Sabda Setiawan
*/
#define BLYNK_TEMPLATE_ID "TMPL8Sx11rgS"
#define BLYNK_DEVICE_NAME "Uas"
#define BLYNK_AUTH_TOKEN "4Rac3Tz5X4lYvmW7P5JT8tHuBSntvSkN"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
#include <ESP32Servo.h>
#define TRIG_PIN 23 // Ultrasonic Sensor TRIG pin
#define ECHO_PIN 22 // Ultrasonic Sensor ECHO pin
#define SERVO_PIN 26 // Servo Motor pin
#define DISTANCE_THRESHOLD 10 // centimeters
#define ledPin 2
#define piezo 12
Servo servo; // membuat objek servo untuk mengontrol servo
float duration_us, distance_cm;
long number=0;
void setup() {
Serial.begin (9600); // menginisialisasi port serial
pinMode(TRIG_PIN, OUTPUT); // set Trigger pin untuk output
pinMode(ECHO_PIN, INPUT); // set echo pin untuk output
servo.attach(SERVO_PIN); // menempelkan servo pada pin 26 ke objek servo
servo.write(0);
pinMode(ledPin, OUTPUT);
pinMode(piezo, OUTPUT);
Blynk.begin(auth, ssid, pass);
}
void loop() {
// Menghasilkan 10-microsecond pulse ke TRIGER pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Mengukur durasi pulse dari ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// kalkulasi distance
distance_cm = 0.017 * duration_us;
if (distance_cm < DISTANCE_THRESHOLD){
servo.write(0); // putar servo hingga 90 derajat
digitalWrite(ledPin, HIGH);
tone(piezo,500,1000); //pin, frequensi, durasi
Blynk.virtualWrite(V2, 1);
number++;
}
else{
servo.write(90); // putar servo hingga 0 derajat
digitalWrite(ledPin, LOW);
Blynk.virtualWrite(V2, 0);
}
// cetak nilainya ke Serial Monitor
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
Serial.print("Count: ");
Serial.print(number);
Serial.println();
Blynk.virtualWrite(V0, distance_cm);
Blynk.virtualWrite(V1, number);
delay(3000);
Blynk.run();
timer.run();
}