#include <ESP32Servo.h>
#define TRIG_PIN 23 // Chân ESP32 GIOP23 kết nối với chân TRIG của Cảm biến Siêu âm
#define ECHO_PIN 22 // Chân ESP32 GIOP22 kết nối với chân ECHO của Cảm biến Siêu âm
#define SERVO_PIN 26 // Chân ESP32 GIOP26 kết nối với chân của Động cơ Servo
#define DISTANCE_THRESHOLD 10 // centimet
Servo servo; // Tạo đối tượng servo để điều khiển một động cơ servo
// Biến sẽ thay đổi:
float duration_us, distance_cm;
void setup() {
Serial.begin (9600); // Khởi tạo cổng serial
pinMode(TRIG_PIN, OUTPUT); // Đặt chân của ESP32 vào chế độ output
pinMode(ECHO_PIN, INPUT); // Đặt chân của ESP32 vào chế độ input
servo.attach(SERVO_PIN); // Kết nối động cơ servo với chân 9 và gán vào đối tượng servo
servo.write(0); // Đặt góc quay của servo về 0 độ
}
void loop() {
// Tạo xung 10 micro giây đến chân TRIG
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Đo thời gian xung từ chân ECHO
duration_us = pulseIn(ECHO_PIN, HIGH);
// Tính toán khoảng cách
distance_cm = 0.017 * duration_us;
if (distance_cm < DISTANCE_THRESHOLD)
servo.write(0); // Xoay động cơ servo về 90 độ
else
servo.write(90); // Xoay động cơ servo về 0 độ
// In giá trị ra Serial Monitor
Serial.print("Khoảng cách: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
}