Arduino 延伸學習實作(一) 光控調節

我相信 新手實作 光控開關 大家都應該了解到 光敏電阻的原理應用  這次我阿俊 帶來 光控調節 也就是所謂的環境光亮度調整的實作 現在的智慧型手機 都一定有的功能 依照光敏電阻 所測出來的值  改變要讓LED亮幾個燈  以下是實作的影片


  

 

材料準備

光控調節  

Arduino 板子 

數條連接線

1K歐姆 X6

10K歐姆 X1

光敏電阻 X1

LED X 6

麵包板

官方程式編譯器 arduino-1.X.X以上版本

 

接下來是電路圖

光控調節1  

 

這次電路圖 線路多了一些 基本上 在光控開關 有做過的 基本上 都是一樣的東西 只是多了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 阿俊~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

AbuseIPDB Contributor Badge
返回頂端