在本快速入門指南中,您將學(xué)習(xí)如何將光敏電阻連接到Arduino板并讀取電壓。您將首先使用串行監(jiān)視器來了解光傳感器的行為方式,然后構(gòu)建一個電路,在天黑時自動打開燈。
當(dāng)您學(xué)習(xí)Arduino時,這是一個很好的練習(xí)電路。代碼簡單明了,光傳感器連接也很簡單。
所需零件
Arduino Uno的
面包板(和一些面包板電線)
光敏電阻 – 也稱為光敏電阻 (LDR) *
電阻 10 kΩ
電線
將光傳感器連接到Arduino
要將光傳感器連接到Arduino,請將光傳感器與5V和GND之間的電阻串聯(lián)。然后將電阻器和光傳感器之間的中間點連接到Arduino上的模擬輸入引腳。
在面包板上連接Arduino光傳感器
以下是使用面包板和一些電纜將此電路連接到Arduino的方法:
Arduino光傳感器代碼
此Arduino代碼是讀取電壓tage 從光傳感器(連接到模擬引腳 A0)然后將模擬讀數(shù)值打印到串行監(jiān)視器的示例。
還有一些代碼會嘗試確定它是黑暗的、昏暗的、明亮的、明亮的還是非常明亮的。您必須調(diào)整閾值才能使其與您的傳感器一起使用。
模擬引腳將為您提供一個介于 0 和 1023 之間的值,其中 0 表示 0V,1023 表示可能的最大電壓(通常為 5V)。
與所有Arduino代碼一樣,您有兩個主要函數(shù)setup()和loop():
在 setup() 中,您需要配置串行端口,以便可以讀出值。
在 loop() 中,您需要讀取模擬輸入并在串行端口上打印此值。
void setup() {
// Setup serial communication at baudrate 9600 for reading the light sensor
Serial.begin(9600);
}
void loop() {
// reads the input on analog pin A0
int lightValue = analogRead(A0);
// Print out the values to read in the Serial Monitor
Serial.print("Analog reading (0-1023): ");
Serial.print(lightValue);
// Use the value to determine how dark it is
// (Try tweaking these to make it more accurate)
if (lightValue < 10) {
Serial.println(" - Dark");
} else if (lightValue < 200) {
Serial.println(" - Dim");
} else if (lightValue < 500) {
Serial.println(" - Light");
} else if (lightValue < 800) {
Serial.println(" - Bright");
} else {
Serial.println(" - Very bright");
}
delay(500);
}
代碼的工作原理
在setup()函數(shù)中,只有一行:這一行設(shè)置了Arduino的串行端口,以便可以將數(shù)據(jù)從Arduino發(fā)送到您的計算機中。Serial.begin(9600);
在 loop() 函數(shù)中,有四個部分:
int lightValue = analogRead(A0);:此行讀取模擬引腳 A0 上的模擬電壓。它返回一個介于 0 和 1023
之間的值,表示引腳上相對于參考電壓的電壓電平(大多數(shù) Arduino 板通常為 5V)。該值存儲在變量 中。lightValue
Serial.println(lightValue);:此行將 lightValue 的值打印到串行監(jiān)視器,以便您可以讀取它。
if (lightValue 《 10) {
。..這些線將使用預(yù)先確定的閾值來確定它是暗的、暗的、亮的、亮的還是非常亮的。您必須調(diào)整閾值以使其適用于您的傳感器。
delay(500);:此行在每次讀取和打印之間增加 500 毫秒的小延遲。此延遲可防止代碼運行過快。這樣可以更輕松地讀取串行監(jiān)視器上的讀數(shù)。
此代碼的最終結(jié)果是,它連續(xù)讀取引腳 A0 處的模擬電壓,將讀數(shù)(0 到 1023
之間的數(shù)字)和亮度值(暗、暗、亮、亮或非常亮)打印到串行監(jiān)視器,并在循環(huán)中重復(fù)該過程。
當(dāng)您將手放在傳感器上時,它檢測到的光量會發(fā)生變化,您可以在串行監(jiān)視器中觀察變化的值。這是可視化數(shù)據(jù)并在事情未按預(yù)期工作時進行調(diào)試的有用方法。
使用串行監(jiān)視器
若要使用串行監(jiān)視器檢查上述代碼的結(jié)果,請按照下列步驟操作:
使用USB電纜將Arduino板連接到計算機。
使用Arduino IDE將提供的代碼上傳到Arduino板。
通過單擊放大鏡圖標(biāo)或使用鍵盤快捷鍵 (Windows/Linux) 或 (Mac) 打開串行監(jiān)視器。Ctrl + Shift + MCmd +
Shift + M
將串行監(jiān)視器中的波特率設(shè)置為 9600(或與代碼中的函數(shù)中的值相同)。Serial.begin()
讀取串行監(jiān)視器中的輸出。
將手放在光傳感器上,查看讀數(shù)如何實時變化。
示例:暗激活 LED
下面是一個示例電路,其中發(fā)光二極管 (LED) 在天黑時打開。如果您想控制戶外燈,您可以輕松地用更強大的 LED 替換
LED。您可以在我們的晶體管教程中了解有關(guān)如何做到這一點的更多信息。
以下是在試驗板上連接電路的方法:
// Definition of constants - values that will never change
const int LIGHT_SENSOR = A0;
const int LED = 3;
// Definition of variables - values that can change
int analogValue;
void setup() {
// Set the LED pin as an output
pinMode(LED, OUTPUT);
}
void loop() {
// read the input from the analog pin
analogValue = analogRead(LIGHT_SENSOR);
// Check if it's above a specific threshold and turn the LED on or off
if(analogValue < 700)
digitalWrite(LED, HIGH); // turn on LED
else
digitalWrite(LED, LOW); // turn off LED
}
審核編輯:陳陳
-
光敏電阻
+關(guān)注
關(guān)注
4文章
293瀏覽量
48989 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187091
發(fā)布評論請先 登錄
相關(guān)推薦
評論