超音波+共陽極全彩LED燈 範例

 










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);

}


留言