這篇文章來源于DevicePlus.com英語網站的翻譯稿。
本文為英譯版,原文發表于deviceplus.jp。
雖然Devices Plus已經介紹過Arduino的多種應用程序和示例,但是了解相關基礎知識對于任何項目的構建仍然是非常重要的!
這次,我們將介紹Arduino電子產品的基礎知識。以編寫Arduino入門書籍而聞名的福田和宏先生將作為本文的指導。
本文將介紹可以通過Arduino進行開啟和關閉的數字輸出的有關內容,并且說明如何創建使用LED的數字輸出程序。
另外,為了使用電子部件,需要了解電氣的有關術語,例如“電壓”和“電流”。如果不理解這些術語的含義,您在購買電子元件的時候將無法確認其是否適用于您的用途。
[目錄]
? Arduino上的接口
? “數字輸出”的兩種輸出狀態
? 通過程序點亮LED
? 程序結構
? 需要了解的電氣術語
? 通過電阻控制電流
? 將LED與電阻連接并點亮LED
Arduino上的接口
Arduino具有類似插孔的串聯分布的端子,作為連接和控制電子組件的接口。這些接口可以實現多種控制功能,例如在這里連接一個LED或電機來對電子組件的運行進行控制,連接開關或類似的控件以進行打開/關閉的操作,或連接溫度傳感器來測量室溫。
Arduino UNO的頂部有14個(0至13)“數字輸入/輸出”端子,右下方有6個(A0至A5)“模擬輸入/輸出”端子。
數字輸入/輸出端子的輸出具有兩種狀態:“高電平狀態”和“低電平狀態”,以實現對電子組件的操作,并且可以檢查電壓狀態。
而模擬輸入是一個可以輸入連續變化電壓的端子。給每個端子分配一個數字編號,在通過程序控制電子組件時會指定其數字編號。
“數字輸出”的兩種輸出狀態
數字輸出是一種可以更改程序中每個引腳狀態的接口。您可以在兩種狀態之間進行切換:“高電平”或“低電平”。例如,如果連接LED且電壓是高電平,那么LED將會被點亮。相反,如果是低電平,則LED會熄滅。
在Arduino中,當電壓是高電平時,端子電壓為“5V”,是低電平時,端子電壓切換為“0V”。高電壓狀態被稱為“高電平”,低電壓狀態被稱為“低電平”。在程序中使用“HIGH”和“LOW”來分別指定高電平和低電平。數字輸入和模擬輸入將在本系列的后面部分內容中進行介紹。
通過程序點亮LED
我們通過用程序控制數字輸出來打開LED。本節將介紹如何打開連接到第13個數字輸入/輸出端子的LED。按照以下步驟創建程序。創建程序后,像之前介紹的那樣將其寫入Arduino,然后檢查LED是否被點亮。
const int LED_PIN = 13 void setup(){ pinMode( LED_PIN, OUTPUT ); } void loop(){ digitalWrite( LED_PIN, HIGH ); }
view rawcode01.ino hosted with ? by GitHub
當對數字輸出進行控制時,第4行和第8行的內容非常重要。數字輸入/輸出有兩種方式:可以改變端子狀態的“數字輸出”以及可以讀取端子狀態的“數字輸入”。因此,必須預先指定要使用的設置。該設置的內容就是第4行的“pinMode ()”。
pinMode( LED_PIN, OUTPUT );
在pinMode ()的括號中輸入目標引腳編號以及模式。本項目中使用了第13個端子,所以目標端子編號為“13”,如果使用的是數字輸出模式,則輸入“OUTPUT”。但是,由于本項目中將端子編號設置為“LED_PIN”,所以將目標端子編號指定為“LED_PIN”(稍后解釋)。
通過第8行上的“digitalWrite ()”更改輸出。
digitalWrite( LED_PIN, HIGH );
指定所要更改輸出的端子編號以及端子輸出的狀態。引腳編號指定為和pinMode ()中一樣的“LED_PIN”。如果端子狀態被指定為“HIGH”,將會輸出5V的電壓。如果您連接了一個LED,那么將會產生電流,LED會亮起。如果要關閉LED,請將狀態指定為“LOW”,使端子電壓變為0。
程序結構
本節將會介紹程序中數字輸出以外的內容。以下所示的第一行代碼將電子組件所連接的端子編號進行了命名。
const int LED_PIN = 13
將電子組件連接到Arduino的接口被進行了編號。例如,將“13”分配給了上次連接了外部LED的端子。在實際控制LED時,必須在程序中指定所連接的接口編號。但是,如果您直接在程序中輸入數字,將很難分清數字的含義,并且如果您之后對程序進行了修改,就要花費更多的時間來研究這些數字。另外,如果更改了連接的對象,就需要在程序中所有指定接口編號的位置進行更改,這非常耗時,并且有可能造成其他部分被意外更改,從而導致故障的發生。
因此,最好為電子部件所連接的接口編號指定為一個描述性的名稱。本文中,我們指定了“LED_PIN”(變量名)的名稱,并且在變量中存儲了“13”。之后,如果想要對LED進行控制,輸入“LED_PIN”即可。需要注意的是,變量名前面的“int”表示變量為整型,“const”可以防止程序中的變量內容被更改。
如下所示的第3行到第5行為setup ()函數,該函數僅被執行一次。
void setup() {
:
}
Arduino開啟后,將根據其中的程序執行該函數。本項目中的setup ()函數中的程序僅被執行一次。因此,setup ()被用于初始設置。該程序用于設置數字輸入/輸出端子的模式。
如下所示的第7行到第9行為loop ()函數,該函數將被重復執行。
void loop(){
:
}
setup ()函數中的程序被執行后,將開始執行loop ()函數。當程序運行到loop ()函數的結尾時,將會返回到loop ()的開頭再次運行。程序的主體內容(如LED照明和電機控制)將會在這里進行描述。在該程序中,可以對數字輸出進行切換從而點亮LED。
需要了解的電氣術語
現在我們來了解一些電氣術語的基本含義。當您挑選電子元件或者使用電子元件時,對電氣術語有一定了解會幫助您進行的更加順利。第一個要知道的電氣術語是“電流”。
金屬中存在一種被稱為“正電荷”的正靜電。靜電這一概念很難理解,我們可以把正電荷視作帶有正電荷的粒子,如圖所示。
這些正電荷由電池或其他電源產生,穿過導體,然后流入電子組件(如LED)。“電流”表示在金屬中流動的正電荷量。如果有大量正電荷流過,則LED等電子部件就能夠獲取大量的電能(能量),光照強度更大。相反,如果電流較小,那么供給的正電荷就較少,在使用LED時,光照強度將會更弱。
電流的單位是“A”(安培)。
除此之外,帶負電的電荷被稱為“負電荷”,但是,在電子電路中,我們通常將正電荷在電路中的移動方向作為電流方向。
需要了解的另一個電氣術語是“電壓”。金屬中的正電荷是電力的來源。正電荷可以在電場力的作用下進行移動。這種可以移動正電荷的力被稱為“電壓”。如果電壓很大,就可以驅動更多的正電荷移動,從而產生更大的電流。而如果電壓較小,那么移動的正電荷數量也會較少,因此產生的電流較小。
電壓的單位是“V(伏特)”。
電池可以提供1.5V的電壓,Arduino的電源端子可以提供5V的電壓,家用電源可以提供120V的電壓。
通過電阻控制電流
許多電子組件都具有可承受的最大電流值,如果通過的電流超過了這個值,電子組件會發生損壞。例如,如果流經LED的電流超過了LED可以承受的極限值,那么LED可能會冒出煙霧或者發熱至破裂。損壞的LED將會無法使用。觸摸熱的LED還有燒傷的危險。
因此,對流經電子組件的電流進行調整很重要。電阻器的作用是限流。電阻器是可以阻止電流流動,并且阻礙正電荷流入其內部的電子元件。因為電阻器抑制了電流,所以流經電子組件的電流量減少了,電子組件就可以安全地進行工作。
電阻器對正電荷流動的抑制程度用“電阻值”來表示。電阻值越小,流動的正電荷量就越多,電流越大。反之,如果電阻值較大,那么電流就會更小。電阻值的單位為“Ω(歐姆)”。電阻值、電壓和電流之間的關系可以用“歐姆定律”的公式來表示。當電壓施加到具有固定電阻值的電阻器兩端時,將電壓除以電阻值就可以得到流經的電流值。
例如,如果將1kΩ電阻連接到Arduino的5V端子上,可以用以下公式計算電流量。1kΩ 是1000Ω。
5V ÷ 1000Ω = 0.005A = 5mA
如果流經電子組件的電流值恒定,您就可以計算出所連接電阻器的電阻值。在這種情況下,用施加的電壓值除以流經的電流值就可以得到電阻值。例如,要在施加5V電壓的同時施加10mA的電流,使用以下公式得到所連接電阻器的電阻值。10mA是0.01A。
5V ÷ 0.01A = 500Ω
您可以在此處獲取有關歐姆定律的更多信息:Learn About Ohm’s law, GPIO, and transistors by simple LED circuit on Raspberry Pi(通過Raspberry Pi上的簡單LED電路了解歐姆定律、GPIO和晶體管)。
電阻器的側面印有4個或5個色帶。您可以通過色帶知道其電阻值。色帶的含義如下表所示。第一個和第二個數字組合起來是一個兩位數的數字,第三個數字是倍數,第四個表示的是電阻誤差。
例如,印有“Brown Black Red Gold(棕色 黑色 紅色 金色)”的電阻器的電阻值是1 kΩ。
將LED與電阻連接并點亮LED
使用LED時,必須連接適當的電阻器來點亮LED。可以通過簡單的計算知道需要連接多少阻值的電阻器。當LED和電阻器串聯連接并且兩端連接了電源時,電阻值可以用以下公式計算得到。
電源電壓即為所連接電池的電源電壓。連接到Arduino的數字輸出時,將高電平狀態下輸出的5V作為電源電壓。對于流經LED的電流和電壓,使用電子元件銷售點和數據手冊上所提供的“正向電壓(VF)”值和“正向電流(IF)”值。如果將流經LED的電流設置為正向電流值,那么其兩端的電壓即為正向電壓。例如,如果使用了紅色LED“SLR-56VC3F”,正向電壓是2V(光電特性中的正向電壓Vf項),正向電流是10mA(光電特性中的If項)。將該值作為“LED電壓”和“LED電流”進行計算。如果電源電壓是5V,LED電壓是2V,電流是10mA,那么如下所示,得到的電阻值為“300Ω”。
(5V – 2V) ÷ 0.01A = 300Ω
另外,如果您想要將LED燈調暗,可以減小電流值。鑒于LED電壓幾乎不會發生改變,所以仍然使用正向電壓值。例如,當流經電流為1 mA時,計算結果如下:
(5V – 2V) ÷ 0.001A = 3000Ω = 3kΩ
我們將具有計算得到的電阻值的電阻器與LED連接。如果無法獲取與計算得到的電阻值完全一致的電阻器,可以使用阻值相近的電阻器。
在本文中,我們講解了數字輸出方式、電壓以及電流。下次,我們將會改變LED的亮度。
審核編輯:湯梓紅
-
led
+關注
關注
242文章
23712瀏覽量
671081 -
電阻
+關注
關注
87文章
5607瀏覽量
174358 -
Arduino
+關注
關注
189文章
6492瀏覽量
190143
發布評論請先 登錄
如何使用Arduino對電源LED進行自動強度控制

數字信號控制器將智能控制和通信融合到LED照明中
通過連接蜂鳴器到Arduino數字輸出引腳配合程序設計報警器的方式概述

評論