「智慧感光呼吸燈」——會根據環境亮度自動調整呼吸速度:越亮呼吸越快、越暗呼吸越慢。
這是非常適合教學與展示的版本,結合了 PWM、模擬輸入與邏輯控制三種重點。
⚙️ 接線說明
元件 Arduino 腳位 備註
LED 正極(長腳) D9 需 PWM 功能
LED 負極(短腳) GND 經 220Ω 電阻
光敏電阻一端 A0 感測輸入
光敏電阻另一端 5V
分壓電阻(10kΩ) A0 與 GND 之間 與 LDR 串接分壓
🌟 功能說明
狀況 光敏電阻值 呼吸速度
光線明亮 約 800~1000 快速閃爍
光線一般 約 400~700 中速呼吸
光線昏暗 約 0~300 緩慢柔和
/*
* 智慧感光呼吸燈
* 根據環境亮度(光敏電阻)自動調整呼吸速度
* 越亮 → 呼吸越快
* 越暗 → 呼吸越慢
* 作者:忠憲老師專用版本
*/
int brightness = 0; // LED 亮度值
int dir = 0; // 呼吸變化速度(步進)
int lightValue = 0; // 光敏電阻讀值
void setup()
{
pinMode(9, OUTPUT); // LED 使用 PWM 腳
pinMode(A0, INPUT); // 光敏電阻輸入腳
Serial.begin(9600); // 監控數據
}
void loop()
{
// 讀取環境亮度(0~1023)
lightValue = analogRead(A0);
// 將亮度值轉換為呼吸速度
// 光線越亮 → delayTime 越短(呼吸快)
int delayTime = map(lightValue, 0, 1023, 60, 10);
// 光線越暗 → delayTime 越長(呼吸慢)
dir = 3; // 每次亮度變化幅度固定
Serial.print("亮度: ");
Serial.print(lightValue);
Serial.print(" 呼吸延遲(ms): ");
Serial.println(delayTime);
// --- 由暗變亮 ---
for (brightness = 0; brightness <= 255; brightness += dir) {
analogWrite(9, brightness);
delay(delayTime);
}
// --- 由亮變暗 ---
for (brightness = 255; brightness >= 0; brightness -= dir) {
analogWrite(9, brightness);
delay(delayTime);
}
}