
// 超音波感測器模組 腳位接法
const int trigPin = 7; // 超音波感測器 Trig 腳位
const int echoPin = 6; // 超音波感測器 Echo 腳位
// 超音波感測器 Vcc 腳位 接 5V
// 超音波感測器 Gnd 腳位 接 Gnd
// 喇叭模組 腳位接法
const int speakerPin = 9; // 3W 喇叭腳位接+極
// 3W 喇叭腳位接-極 接GND
long getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2; // 轉換為公分
return distance;
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(speakerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
long distance = getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance > 100 || distance == 0) {
noTone(speakerPin); // 100 公分以上不發聲
} else if (distance > 30) {
tone(speakerPin, 1000, 500); // 每 0.5 秒嘟 1 聲
delay(500);
noTone(speakerPin); // 停 0.5 秒
delay(500);
} else {
tone(speakerPin, 1000); // 30 公分內,連續嘟
}
}
留言
張貼留言