我相信 新手實作 光控開關 大家都應該了解到 光敏電阻的原理應用 這次我阿俊 帶來 光控調節 也就是所謂的環境光亮度調整的實作 現在的智慧型手機 都一定有的功能 依照光敏電阻 所測出來的值 改變要讓LED亮幾個燈 以下是實作的影片
材料準備
Arduino 板子
數條連接線
1K歐姆 X6
10K歐姆 X1
光敏電阻 X1
LED X 6
麵包板
官方程式編譯器 arduino-1.X.X以上版本
接下來是電路圖
這次電路圖 線路多了一些 基本上 在光控開關 有做過的 基本上 都是一樣的東西 只是多了5個LED和電阻而已!~
再來是程式碼
// Arduino 新手實作 光空調節 by~ 阿俊
int photocellPin = 1; // 光敏電阻接到模擬引腳A1
int photocellVal = 0; // 設定光感初始值為0
int LED1 = 8; // 定義LED腳位為8
int LED2 = 7; // 定義LED腳位為7
int LED3 = 6; // 定義LED腳位為6
int LED4 = 5; // 定義LED腳位為5
int LED5 = 4; // 定義LED腳位為4
int LED6 = 3; // 定義LED腳位為3
void setup() {
pinMode(LED1, OUTPUT);// 定義LED為輸出腳
pinMode(LED2, OUTPUT);// 定義LED為輸出腳
pinMode(LED3, OUTPUT);// 定義LED為輸出腳
pinMode(LED4, OUTPUT);// 定義LED為輸出腳
pinMode(LED5, OUTPUT);// 定義LED為輸出腳
pinMode(LED6, OUTPUT);// 定義LED為輸出腳
Serial.begin(9600);// 設定監控視窗傳輸速度
}
void loop() {
photocellVal = analogRead(photocellPin); //光感值來源為光敏電阻所測的值
Serial.println(photocellVal); // 將所測出來的值顯示在監控視窗
delay(100); // 延遲0.1秒
if (photocellVal>600)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,0); // 關閉LED登
digitalWrite(LED3,0); // 關閉LED登
digitalWrite(LED4,0); // 關閉LED登
digitalWrite(LED5,0); // 關閉LED登
digitalWrite(LED6,0); // 關閉LED登
}
if (photocellVal<600)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,1); // 開啟LED登
digitalWrite(LED3,0); // 關閉LED登
digitalWrite(LED4,0); // 關閉LED登
digitalWrite(LED5,0); // 關閉LED登
digitalWrite(LED6,0); // 關閉LED登
}
if (photocellVal<500)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,1); // 開啟LED登
digitalWrite(LED3,1); // 開啟LED登
digitalWrite(LED4,0); // 關閉LED登
digitalWrite(LED5,0); // 關閉LED登
digitalWrite(LED6,0); // 關閉LED登
}
if (photocellVal<400)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,1); // 開啟LED登
digitalWrite(LED3,1); // 開啟LED登
digitalWrite(LED4,1); // 開啟LED登
digitalWrite(LED5,0); // 關閉LED登
digitalWrite(LED6,0); // 關閉LED登
}
if (photocellVal<300)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,1); // 開啟LED登
digitalWrite(LED3,1); // 開啟LED登
digitalWrite(LED4,1); // 開啟LED登
digitalWrite(LED5,1); // 開啟LED登
digitalWrite(LED6,0); // 關閉LED登
}
if (photocellVal<200)
{
digitalWrite(LED1,1); // 開啟LED登
digitalWrite(LED2,1); // 開啟LED登
digitalWrite(LED3,1); // 開啟LED登
digitalWrite(LED4,1); // 開啟LED登
digitalWrite(LED5,1); // 開啟LED登
digitalWrite(LED6,1); // 開啟LED登
}
}
這次的程式 是讓條件 有多項式選擇 光感值大於600 也就是環境光很亮 這裡數值可以用監控視窗 來獲取 抓到自己想要的值 就可以在程式裡 進行修改 我的方法是 大於600 亮1 5消 小於600 亮2 4消 小於500 亮3 3消 以此列推下去
結論 這次實作 了解到[ IF ] 得好用之處 在條件判斷式中 IF 就非常重要 他能管理 周邊配件的運作 條件設定好 他就會分辨理解判定執行 你看 Arduino 多麼神奇是吧~~~ 謝謝大家 by 阿俊~
