/* * 智慧感光呼吸燈 * 根據環境亮度(光敏電阻)自動調整呼吸速度 * 越亮 → 呼吸越快 * 越暗 → 呼吸越慢 * 作者:忠憲老師專用版本 */
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); }}