這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
ARDUINO激光絆線
目的
本教程描述了如何使用Arduino Uno制作一個激光絆線。如果您不熟悉Arduino平臺,請參閱“Arduino設(shè)置教程”。
概述
在本教程中,您將學(xué)習(xí)如何設(shè)置激光絆線傳感器,并在光束被阻斷時觸發(fā)執(zhí)行器,在此例中為點亮LED。您將學(xué)習(xí)如何使用if/else循環(huán)、激光二極管以及光敏電阻。
警告: 激光可能對眼睛有害,切勿直視激光束。
設(shè)備
Arduino Uno R3
“DOT”激光模
20件光敏電阻套
9V、1A電源適配器
跳線
USB電纜(A-to-B)
面包板
目錄
編寫代碼
引腳定義
設(shè)置
循環(huán)
上傳并運行程序
程序
1.1 電路設(shè)計
這個項目的電路設(shè)計相當(dāng)簡單。電路分為三部分:激光電源、光敏電阻接收器(傳感器)和LED指示燈(執(zhí)行器)。一般來講,單片機(jī)通過傳感器接收來自外界的信息,并通過執(zhí)行器傳遞信息或執(zhí)行操作。我選擇使用LED指示燈作為我的執(zhí)行器,但是執(zhí)行器可以是警報、短信,甚至是門鎖。
我總是喜歡用Fritzing繪制原理圖(圖1:電路原理圖)。Fritzing是一款開源原理圖設(shè)計和PCB布線軟件。這樣,將來可以作為參考。
圖1:電路原理圖
電路的第一部分是激光二極管的電源。您可以用5V引腳(紅色導(dǎo)線)為激光二極管供電。我希望能夠打開/關(guān)閉激光器,但是Arduino上的數(shù)字輸出引腳無法為激光二極管提供足夠的功率。負(fù)極應(yīng)接地(黑色導(dǎo)線)。確保您的激光二極管不需要限流電阻。如果需要,請選擇適當(dāng)?shù)淖柚怠?/p>
接下來將創(chuàng)建我們的執(zhí)行器(LED指示燈)。執(zhí)行器的目的是告訴我們激光二極管光束已經(jīng)被阻斷。LED和電阻應(yīng)串聯(lián)在引腳9(淺藍(lán)色導(dǎo)線)和GND(黑色導(dǎo)線)之間。電阻的作用是限制流過LED的電流,并應(yīng)根據(jù)您的LED進(jìn)行相應(yīng)調(diào)整,以防止電流過大將LED燒壞。請記住,LED較長的引線是正極,應(yīng)連接到引腳9。
最后,電路的最后一部分是光敏電阻(圖2:光敏電阻),即我們的傳感器。光敏電阻是一種電阻,其阻值會隨電阻面上的光線強度變化而變化。電阻的一個引線應(yīng)連至引腳7(淺藍(lán)色導(dǎo)線),另一個引線應(yīng)連至GND(黑色導(dǎo)線)。我使用的光敏電阻在光線照射時具有高電阻,而在沒有光線時具有低電阻。
圖2:光敏電阻
2.0 編寫代碼
2.1 引腳定義
代碼的第一部分是定義引腳。這一步是可選操作,但是為了便于記憶和跟蹤,我為引腳添加了描述性名稱。另外,如果我改變電路的連接方式,只需改變引腳定義即可,無需改變引用引腳編號的每一行代碼。
在我們的電路中,光敏電阻被定義為“引腳7”,LED被定義為“引腳9”。
圖3:引腳定義
2.2 設(shè)置
在代碼的設(shè)置部分,我將LED引腳配置為數(shù)字輸出。
圖4:設(shè)置代碼
我們還將光敏電阻配置為帶上拉電阻(INPUT_PULLUP)的數(shù)字輸入。我們正在創(chuàng)建的電路與下面的電路類似,這是一種常用電氣電路。在這種情況下,上拉電阻和電壓源位于單片機(jī)(Arduino)內(nèi)部,“按鈕”則是我們的光敏電阻。當(dāng)激光二極管照射在光敏電阻上時,它呈現(xiàn)高電阻,并且上拉電阻將輸入的電壓拉到數(shù)字高電平。當(dāng)光束被阻斷時,光敏電阻的電阻下降,輸入電壓變?yōu)閿?shù)字低電平。
圖5:上拉電阻輸入電路
2.3 循環(huán)
對于重復(fù)循環(huán),我編寫了一個連續(xù)查詢光敏電阻數(shù)字輸入的IF/ELSE語句。如果數(shù)字輸入為高電平,LED輸出關(guān)閉;否則LED輸出開啟。
圖6:循環(huán)代碼
3.0 上傳并運行程序
圖7:激光絆線的Arduino電路
將代碼上傳到Arduino。確保Arduino已經(jīng)連接9V電源適配器,因為USB電源不足以為Arduino和激光二極管同時供電。程序開始后,激光二極管應(yīng)該輸出一束激光。如果光束照射在光敏電阻上,LED應(yīng)熄滅(圖8:激光絆線)。當(dāng)光束被阻斷時,LED亮起,表明絆線已經(jīng)斷開(圖9:絆線斷開)。
圖8:激光絆線
圖9:絆線斷開
提示:如果您的LED沒有點亮,請使用萬用表分別檢查激光照射到光敏電阻上時光敏電阻的阻值以及光束阻斷時光敏電阻的阻值。光照射到光敏電阻上時,光敏電阻的阻值應(yīng)該在數(shù)千歐姆;沒有照射時,阻值應(yīng)為幾百歐姆或更低。
附件:激光絆線代碼
/* Project: Laser Tripwire Tutorial * Written by: Chris Marella * Date: January 24, 2018 * Version: 1.0 * */ //Pin Definitions const int photo = 7; const int LED = 9; void setup() { //Pin Configurations //Outputs pinMode(LED, OUTPUT); digitalWrite(LED, LOW); //Inputs pinMode(photo, INPUT_PULLUP); } void loop() { //if/else loop checks if photoresistor is high or low if(digitalRead(photo)==HIGH){ digitalWrite(LED, HIGH); }else{ digitalWrite(LED, LOW); } }
DevicePlus 編輯團(tuán)隊
設(shè)備升級版適用于所有熱愛電子和機(jī)電一體化的人。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751075 -
激光
+關(guān)注
關(guān)注
19文章
3095瀏覽量
64309 -
Arduino
+關(guān)注
關(guān)注
187文章
6457瀏覽量
186502
發(fā)布評論請先 登錄
相關(guān)推薦
評論