設備與材料
個人電腦 × 1
arduino Uno × 1
麵包板 × 1
3色LED(共陽) × 1
1/4 色碼電阻10k × 1
光敏電阻 × 1
連接線 若干
電路圖
實體接線圖
光敏電阻
光敏電阻(light dependent resistor)簡稱 LDR,製作材料可分為光敏反應接近可見光的硫化鎘(CdS)或光敏反應
接近紅外線的硒化鎘(CdSe),因為使用材料的關係,所以我們常以 CdS 代表光敏電阻器。
光敏電阻的電阻值大小會隨光線亮度改變,光線越強,電阻越小。這次選用的光敏電阻在日光燈下,電阻約5kΩ,遮住光線電阻值約50k Ω 。
程式
/*
* 功能:光感應調光燈
* 輸入腳:A0
* 輸出腳:3,5,6
*/
//宣告全域變數
//宣告輸出入接腳
const int LDR = A0; //光敏電阻輸入腳
const int rLED = 3; //紅色LED PWM輸出腳
//綠色LED PWM輸出腳 要自己訂義
//藍色LED PWM輸出腳 要自己訂義
int val = 0; //類比輸入
int _val = 0; //舊類比輸入
void setup() {
// 設定輸入接腳
pinMode(LDR, INPUT);
//設定 rLED 接腳為輸出模式
pinMode(rLED, OUTPUT);
//設定 gLED 接腳為輸出模式 要自己設定
//設定 bLED 接腳為輸出模式 要自己設定
//開啟串列埠 功能,並設定鮑率9600 除錯用的,沒要除錯時可刪除
Serial.begin(9600);
}
void loop() {
int brightness;
val = analogRead(LDR); //讀取 光敏電阻接腳的類比輸入
brightness=map(val, 150, 600, 0, 255); //將光敏電阻類比輸入轉換成0-255 PWM 輸出用
//亮度低於一定程度才點燈 亮度越暗 val 越小
if(val<600){
analogWrite(rLED,brightness); //紅色LED PWM 輸出
//綠色LED PWM 輸出 要自己寫
//藍色LED PWM 輸出 要自己寫
}else{
digitalWrite(rLED,HIGH); //紅色LED滅 (共陽LED 高電位 不亮)
//綠色LED滅 要自己寫
//藍色LED滅 要自己寫
}
//數值有改變時則傳送給電腦 除錯用,如果不用除錯可以刪除
if (val != _val) {
Serial.println(val); //傳送資料給電腦
_val = val; //更新舊讀取值
delay(100); //延時 10ms
}
}
功能
本實習用光敏電阻偵測光線,當光線越暗時,3色LED越亮,光線亮度達一定程度時,3色LED全滅
提示
上面程式只是示範 紅色LED PWM 輸出,要自行完成綠色與藍色LED PWM輸出。
相關知識
光敏電阻
PWM 控制
三色LED
byte
INPUT_PULL
analogWrite 函式
switch 選擇指令
Arduino 布林運算子
自定函數
if 判斷式
if else 判斷式
digitalRead 函式
boolean
陣列
for 迴圈
Arduino 複合運算子
const
Arduino Uno 硬體
int
void
setup 函數
loop 函數
pinMode 函數
digitalWrite 函數
delay 函數
Arduino 輸出實習(單燈閃爍)
Arduino 輸出實習(跑馬燈-愚公移山)
Arduino 輸出實習(跑馬燈-for迴圈)
Arduino 數位輸入實習
Arduino 數位輸入實習(INPUT_PULLUP)
Arduino 類比輸入實習
Arduino PWM 實習 (呼吸燈)
Arduino PWM 實習 (光感應調光燈)
Arduino 8×8 LED Matrix MAX7219 實習
Arduino 紅綠燈小綠人 實習
Arduino 計時器 實習
Arduino 音樂盒
Arduino 電子琴(鍵盤掃描)
Arduino DHT11 溫濕度感應器
Arduino OLED 顯示
Arduino 超音波測距模組 HC-SR04
Arduino 執行時間實習
Arduino 電容測試器
Arduino 紅外線接收實習
Arduino 紅外線發射實習 EPSON 投影機控制
ESP-12F 網路智慧開關(MQTT)
ESP-12F 雲端記錄型 K-Type 溫度計(MQTT ThingSpeak)
ESP-12F 手機雲端紅外線控制
ESP-12F 網路電台收音機
ESP-12F 電子鼓