const int trigPin = 7; // 超音波感測器 Trig 腳位
const int echoPin = 6; // 超音波感測器 Echo 腳位
const int redPin = 9; // 紅色 LED
const int greenPin = 10; // 綠色 LED
const int bluePin = 11; // 藍色 LED
void setColor(int red, int green, int blue) {
analogWrite(redPin, 255 - red); // 反轉 PWM,適應共陽極 LED
analogWrite(greenPin, 255 - green);
analogWrite(bluePin, 255 - blue);
}
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(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
}
void loop() {
long distance = getDistance();
if (distance > 70) {
setColor(0, 255, 0); // 綠色 (70 公分以上)
} else if (distance > 20) {
setColor(255, 255, 0); // 黃色 (70 ~ 20 公分)
} else {
setColor(255, 0, 0); // 紅色 (20 公分以下)
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
留言
張貼留言