#include <Servo.h>
Servo myServo;
// Khai báo các chân kết nối
const int trigPin = 9;
const int echoPin = 10;
const int buzzerPin = 12; // Chân nối cực dương của còi Piezo
// Biến lưu trữ khoảng cách
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
myServo.attach(11); // Chân tín hiệu của Servo nối vào chân 11
Serial.begin(9600);
}
// Hàm xử lý đo khoảng cách của cảm biến siêu âm
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
void loop() {
// QUÉT LƯỢT ĐI: Servo quay từ 15 độ đến 165 độ
for(int i = 15; i <= 165; i++){
myServo.write(i);
delay(30); // Chờ servo quay đến vị trí
distance = calculateDistance();
// NẾU PHÁT HIỆN VẬT CẢN DƯỚI 20CM -> BẬT CÒI
if(distance > 0 && distance < 20) {
tone(buzzerPin, 1000); // Bật còi phát âm thanh ở tần số 1000Hz
} else {
noTone(buzzerPin); // Tắt còi nếu an toàn
}
// Gửi dữ liệu lên máy tính (Dành cho vẽ Radar sau này)
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.println(".");
}
// QUÉT LƯỢT VỀ: Servo quay ngược lại từ 165 độ về 15 độ
for(int i = 165; i > 15; i--){
myServo.write(i);
delay(30);
distance = calculateDistance();
// NẾU PHÁT HIỆN VẬT CẢN DƯỚI 20CM -> BẬT CÒI
if(distance > 0 && distance < 100) {
tone(buzzerPin, 1000); // Bật còi phát âm thanh ở tần số 1000Hz
} else {
noTone(buzzerPin); // Tắt còi nếu an toàn
}
// Gửi dữ liệu lên máy tính (Dành cho vẽ Radar sau này)
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.println(".");
}
}