[env:arduino_uno]
platform = "atmelavr"
board = "uno"
framework = "arduino"
lib_deps = [
"blynkkk/Blynk @ ^1.0.1",
"blynkkk/BlynkSimpleEsp8266 @ ^1.0.1",
"sandeepmistry/Ultrasonic @ ^1.1.1"
]
[upload]
speed = 115200
#define BLYNK_TEMPLATE_ID "TMPL67ZI55flH"
#define BLYNK_TEMPLATE_NAME "UAP IOT"
#define BLYNK_AUTH_TOKEN "lqQLJoDlY7vQG-lxxXLOR4IpqizxoR2T"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <Ultrasonic.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleShieldEsp8266.h>
// Hardware Serial on Mega, Leonardo, Micro
#define EspSerial Serial1
// Your ESP8266 baud rate:
#define ESP8266_BAUD 115200
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Your ESP8266 instance:
ESP8266 wifi(&EspSerial);
#define buzzerPin 7 // Tentukan pin buzzer
#define trigPin 6 // Tentukan pin Trig sensor ultrasonik
#define echoPin 5 // Tentukan pin Echo sensor ultrasonik
#define greenPin 4 // Tentukan pin LED hijau
#define yellowPin 3 // Tentukan pin LED kuning
#define redPin 2 // Tentukan pin LED merah
Ultrasonic ultrasonic(trigPin, echoPin); // Initialize Ultrasonic sensor
void setup() {
pinMode(trigPin, OUTPUT); // Konfigurasikan pin Trig sebagai OUTPUT
pinMode(echoPin, INPUT); // Konfigurasikan pin Echo sebagai INPUT
pinMode(redPin, OUTPUT); // Konfigurasikan pin LED merah sebagai OUTPUT
pinMode(yellowPin, OUTPUT); // Konfigurasikan pin LED kuning sebagai OUTPUT
pinMode(greenPin, OUTPUT); // Konfigurasikan pin LED hijau sebagai OUTPUT
pinMode(buzzerPin, OUTPUT); // Konfigurasikan pin buzzer sebagai OUTPUT
Serial.begin(115200); // Inisialisasi komunikasi serial dengan kecepatan 9600 bps
// Initialize Serial and Blynk
Serial.begin(115200);
delay(10);
EspSerial.begin(ESP8266_BAUD);
delay(10);
Blynk.begin(auth, wifi, ssid, pass);
Serial.println("Setup complete");
}
void loop() {
Blynk.run();
digitalWrite(trigPin, LOW); // Set pin Trig ke LOW
delayMicroseconds(2); // Tunggu selama 2 mikrodetik
digitalWrite(trigPin, HIGH); // Set pin Trig ke HIGH
delayMicroseconds(10); // Tunggu selama 10 mikrodetik
digitalWrite(trigPin, LOW); // Set pin Trig kembali ke LOW
long waktu, jarak; // Deklarasi variabel durasi dan jarak
waktu = pulseIn(echoPin, HIGH); // untuk menyimpan durasi dari pulsa Echo yang diterima dari sensor ultrasonik.
jarak = (waktu * 0.0343) / 2; // Menghitung jarak berdasarkan durasi
Serial.print(jarak); // Tampilkan jarak ke Serial Monitor
Serial.println("cm"); // Tambahkan label "cm" di Serial Monitor
digitalWrite(redPin, LOW); // Matikan LED merah
digitalWrite(yellowPin, LOW); // Matikan LED kuning
digitalWrite(greenPin, LOW); // Matikan LED hijau
noTone(buzzerPin); // Matikan buzzer
// Update virtual pins
Blynk.virtualWrite(V4, jarak); // Update virtual pin V4 dengan jarak
if (jarak >= 20 && jarak <= 30) {
digitalWrite(greenPin, HIGH);
tone(buzzerPin, 1000);
delay(300);
noTone(buzzerPin);
delay(300);
Blynk.virtualWrite(V1, 1); // LED Green ON
Blynk.virtualWrite(V0, 1000); // Buzzer frequency 1000 Hz
} else if (jarak >= 10 && jarak <= 20) {
digitalWrite(yellowPin, HIGH);
tone(buzzerPin, 2000);
delay(200);
noTone(buzzerPin);
delay(200);
Blynk.virtualWrite(V3, 1); // LED Yellow ON
Blynk.virtualWrite(V0, 2000); // Buzzer frequency 2000 Hz
} else if (jarak >= 0 && jarak <= 10) {
digitalWrite(redPin, HIGH);
tone(buzzerPin, 3000);
Blynk.virtualWrite(V2, 1); // LED Red ON
Blynk.virtualWrite(V0, 3000); // Buzzer frequency 3000 Hz
} else {
Blynk.virtualWrite(V1, 0); // LED Green OFF
Blynk.virtualWrite(V2, 0); // LED Red OFF
Blynk.virtualWrite(V3, 0); // LED Yellow OFF
Blynk.virtualWrite(V0, 0); // Buzzer OFF
}
delay(100); // Jeda sebelum membaca sensor lagi
}