#include <Wire.h>
#include <ESP32Servo.h>
Servo myservo; // membuat variabel servo untuk dikendalikan
int pos = 0; // deklarasi variabel untuk posisi sudut
int ledpin1 = 12;
int ledpin2 = 14;
int ledpin3 = 25;
int buzzerpin = 26;
int trigpin = 23;
int echopin = 22;
int potPin = 13; // deklarasi pin 2 untuk input potensio
long waktu;
int jarak;
int val;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
myservo.attach(17); //deklarasi servo pada pin 17
pinMode(ledpin1, OUTPUT);
pinMode(ledpin2, OUTPUT);
pinMode(ledpin3, OUTPUT);
pinMode(buzzerpin, OUTPUT);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
waktu = pulseIn(echopin, HIGH);
jarak = waktu*0.034/2;
delay(1000);
if (jarak > 250){
Serial.println("Aman");
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, LOW);
digitalWrite(ledpin3, LOW);
myservo.write(0);
}
else if (jarak > 50 && jarak < 250){
Serial.println("Waspada");
digitalWrite(ledpin2, HIGH);
digitalWrite(ledpin3, LOW);
digitalWrite(ledpin1, LOW);
noTone(buzzerpin);
myservo.write(90);
}
else if (jarak < 50) {
Serial.println("Awas");
Serial.println("jarak");
Serial.print(jarak);
digitalWrite(ledpin3, HIGH);
digitalWrite(ledpin2, LOW);
digitalWrite(ledpin1, LOW);
tone(buzzerpin, 150);
for(pos = 0; pos < 180; pos+= 1) // perulangan untuk posisi 0 sampai 180 derajat
{ // step setiap 1 derajat
myservo.write(pos); // memerintahkan servo ke posisi derajat sesuai nilai variabel pos
delay(15); // menunggu 15 milidetik
}
val = analogRead(potPin); // memasukan nilai pembacaan analog pin potensio ke variabel val
Serial.print("Jarak = ");
Serial.print(jarak);
Serial.print(" cm");
}
}
// this speeds up the simulation
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4