ESP8266 + HCSR04 sensor Ultrasonic + BUZZER + LED Trafic Light
Klik Link: ROBOTIKA
/*
Jurnalku by Fajar Himawan
Esp8266 + Led + Buzzer + Sensor Ultrasonic HCSR04
*/
#define trigPin D7 // Menetapkan pin trigger sensor ultrasonik
#define echoPin D8 // Menetapkan pin echo sensor ultrasonik
#define led D3 // Menetapkan pin untuk LED 1
#define led2 D2 // Menetapkan pin untuk LED 2
#define led3 D1 // Menetapkan pin untuk LED 3
#define led4 D3 // Menetapkan pin untuk LED 4
#define led5 D2 // Menetapkan pin untuk LED 5
#define led6 D1 // Menetapkan pin untuk LED 6
#define buzzer D5 // Menetapkan pin untuk buzzer
int sound = 250; // Menetapkan variabel untuk frekuensi bunyi buzzer
void setup() {
Serial.begin (9600); // Mengaktifkan serial komunikasi dengan baud rate 9600
pinMode(trigPin, OUTPUT);// Mengatur pin trigger sebagai output
pinMode(echoPin, INPUT);// Mengatur pin echo sebagai input
pinMode(led, OUTPUT); // Mengatur pin LED 1 sebagai output
pinMode(led2, OUTPUT); // Mengatur pin LED 2 sebagai output
pinMode(led3, OUTPUT); // Mengatur pin LED 3 sebagai output
pinMode(led4, OUTPUT); // Mengatur pin LED 4 sebagai output
pinMode(led5, OUTPUT); // Mengatur pin LED 5 sebagai output
pinMode(led6, OUTPUT); // Mengatur pin LED 6 sebagai output
pinMode(buzzer, OUTPUT);// Mengatur pin buzzer sebagai output
}
void loop() {
long duration, distance; // Menetapkan variabel untuk waktu dan jarak
// Mengirimkan sinyal ultrasonik selama 2 mikro detik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Sinyal ultrasonik dikirimkan selama 10 mikro detik
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Membaca waktu pantulan balik sinyal ultrasonik
distance = (duration/2) / 29.1; // Menghitung jarak berdasarkan waktu pantulan balik sinyal ultrasonik
// Menyalakan LED 1 jika jarak kurang dari atau sama dengan 30 cm dan menyetel frekuensi bunyi buzzer menjadi 250 Hz
if (distance <= 30) {
digitalWrite(led, HIGH);
sound = 250;
}
else {
digitalWrite(led,LOW); // Mematikan LED 1 jika jarak lebih dari 30 cm
}
// Menyalakan LED 2 jika jarak kurang dari 25 cm dan menyetel frekuensi bunyi buzzer menjadi 260 Hz
if (distance < 25) {
digitalWrite(led2, HIGH);
sound = 260;
}
else {
digitalWrite(led2, LOW); // Mematikan LED 2 jika jarak lebih dari 25 cm
}
// Menyalakan LED 3 jika jarak kurang dari 20 cm dan menyetel frekuensi bunyi buzzer menjadi 270 Hz
if (distance < 20) {
digitalWrite(led3, HIGH); // led3 menyala
sound = 270; // frekuensi bunyi buzzer menjadi 270 Hz
}
else {
digitalWrite(led3, LOW); // led3 mati
}
// jika jarak kurang dari 15 cm
if (distance < 15) {
digitalWrite(led4, HIGH); // led4 menyala
sound = 280; // frekuensi bunyi buzzer menjadi 280 Hz
}
else {
digitalWrite(led4, LOW); // led4 mati
}
// jika jarak kurang dari 10 cm
if (distance < 10) {
digitalWrite(led5, HIGH); // led5 menyala
sound = 290; // frekuensi bunyi buzzer menjadi 290 Hz
}
else {
digitalWrite(led5, LOW); // led5 mati
}
// jika jarak kurang dari 5 cm
if (distance < 5) {
digitalWrite(led6, HIGH); // led6 menyala
sound = 300; // frekuensi bunyi buzzer menjadi 300 Hz
}
else {
digitalWrite(led6, LOW); // led6 mati
}
// jika jarak di luar rentang 0 - 30 cm, maka akan menampilkan pesan "Out of range" pada serial monitor
// dan mematikan bunyi buzzer
if (distance > 30 || distance <= 0){
Serial.println("Out of range");
noTone(buzzer);
}
// jika jarak masih dalam rentang 0 - 30 cm, maka akan menampilkan jarak pada serial monitor
// dan menghasilkan bunyi buzzer sesuai dengan frekuensi yang sudah diatur sebelumnya
else {
Serial.print(distance);
Serial.println(" cm");
tone(buzzer, sound);
}
delay(5); // memberikan jeda 5 milidetik (0.005 detik) sebelum mengulang kembali loop()
}
No comments