這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
本文最初發(fā)布在deviceplus.jp.網(wǎng)站上,而后被翻譯成英語。
前言
在本文中,您可以了解如何在您的Arduino項目中使用輕觸開關(guān)以及其實際工作原理。
我們已經(jīng)利用數(shù)字輸出使數(shù)字輸出引腳在HIGH (5V) 和LOW (0V) 兩種狀態(tài)之間切換,從而實現(xiàn)了對LED和電機的控制。
另外,您還可以使用數(shù)字輸出來確認電子部件的狀態(tài)。數(shù)字輸出引腳還可以切換為數(shù)字輸入引腳。通過這樣切換,可以確認引腳上的電壓,并通過“LOW”和“HIGH”兩種狀態(tài)輸入。這些輸入值可用于控制其他電子部件。比如您可能希望在數(shù)字輸入為HIGH時使電機運轉(zhuǎn),在輸入為LOW時使電機停止。
實際上,利用開關(guān)等電子器件,可以使數(shù)字輸入引腳的狀態(tài)切換為0V或5V。
在本文中,我們將介紹如何使用開關(guān)實現(xiàn)數(shù)字輸入。
Arduino的數(shù)字輸入
使用Arduino Uno,您可以將最初用于數(shù)字輸出的引腳D0到D13作為數(shù)字輸入引腳使用??梢酝ㄟ^程序切換為數(shù)字輸入模式,來確認引腳狀態(tài)。
0V輸入為“LOW”,5V輸入為“HIGH”。在程序中,LOW會被讀取為“0”,HIGH會被讀取為“1”。通過確認這些輸入值并執(zhí)行條件分支等處理,即可控制工作狀態(tài)。
下面我們來實際嘗試一下用Arduino進行數(shù)字輸入。在這里,我們使用跳線連接引腳5,并確認連接到5V電源和GND時的變化。創(chuàng)建以下程序并將其發(fā)送給Arduino:
在第4行中,通過pinMode()指定“INPUT”,以將本次使用的引腳7切換為輸入模式。現(xiàn)在,您可以通過程序確認引腳狀態(tài)了。
獲取第11行由digitalRead()指定的引腳的狀態(tài),并將其存儲在value變量中。如果是0V,則存儲為“0”,如果是5V,則存儲為“1”。
當您想確認獲取的狀態(tài)時,請使用“串行監(jiān)視器”。對于Arduino而言,您可以使用用來從電腦傳輸程序的USB數(shù)據(jù)線將數(shù)據(jù)從Arduino發(fā)送到電腦。使用串行通信可以收發(fā)數(shù)據(jù)。您可以使用串行通信將通過數(shù)字輸入獲取的狀態(tài)發(fā)送到電腦進行確認。
如果您想在程序中使用串行通信,請通過第5行的Serial.begin()進行初始化。此時需要指定通信速度。然后,通過第12行的Serial.println()指定一個值,即可將數(shù)據(jù)發(fā)送到電腦。在本文中,我們使之發(fā)送存儲著數(shù)字輸入狀態(tài)的value變量的內(nèi)容。
要確認Arduino通過串行通信發(fā)送過來的數(shù)據(jù)時,請使用Arduino IDE中內(nèi)置的“串行監(jiān)視器”。要使用串口監(jiān)視器,請單擊Arduino IDE右上角的“串口監(jiān)視器圖標”(放大鏡圖標),即可顯示串行監(jiān)視器畫面。將右下角的通信速度設置為與程序的Serial.begin()中指定的通信速度(本文為9600)相同的值。然后,屏幕上將會顯示0或1。
接下來,將跳線插入引腳7。將另一端連接到 GND,串行監(jiān)視器上顯示“0”。也就是說,如果數(shù)字引腳為0V,您可以看到“0”(LOW)。同樣,當引腳7與5V電源連接時,您可以看到顯示內(nèi)容變?yōu)椤?”(HIGH)。
現(xiàn)在我們已經(jīng)確認,輸入會根據(jù)引腳的狀態(tài)發(fā)生變化。
使用輕觸開關(guān)切換輸入
下面,我們嘗試用一個開關(guān)使數(shù)字輸入引腳在HIGH和LOW狀態(tài)之間切換。在本文中,我們使用的是按鈕型“輕觸開關(guān)”。
對于輕觸開關(guān)而言,當按下上方按鈕時,內(nèi)部電路接通,進入通電狀態(tài)。當松開按鈕時,電路斷開,沒有電流流過。通常,在開關(guān)的四個角會配有引腳。如上圖所示配置時,左右引腳之間的間隙起到開關(guān)的作用。右側(cè)的上下引腳和左側(cè)的上下引腳是始終連接的。
如果將輕觸開關(guān)的一個引腳與數(shù)字引腳相連接,另一引腳連接到GND,則按下開關(guān)時內(nèi)部電路會接通,引腳將直連GND。通過這樣做,您可以判斷只要按下開關(guān),數(shù)字輸入就會變?yōu)椤癏IGH”。
但是,當沒有按下開關(guān)時,數(shù)字引腳將會處于沒有任何連接的狀態(tài)。在這種狀態(tài)下,施加在引腳上的電壓會變得不穩(wěn)定。在不穩(wěn)定狀態(tài)下,當用手觸碰引腳或有電池等靠近時,輸入可能會發(fā)生變化。
因此,我們在使用開關(guān)時會連接一種稱為“上拉電路”或“下拉電路”的電路。這種方法是借助電阻器將數(shù)字引腳連接到電源或GND,可以起到穩(wěn)定輸入狀態(tài)的作用。該電路連接到電源端時稱為“上拉電路”,連接到GND端時稱為“下拉電路”。在本文中將以上拉電路為例進行說明,但下拉電路的原理也是一樣的。
使用上拉電路時,在未按下開關(guān)的狀態(tài)下,開關(guān)通過一個電阻器連接到電源。這樣,就與數(shù)字引腳連接電源時的狀態(tài)相同,輸入會穩(wěn)定在5V(HIGH)。當按下開關(guān)后,數(shù)字引腳處于直接連接GND的狀態(tài),因此輸入切換為0V(LOW)。
雖然處于電源與GND連接的狀態(tài),但它們之間夾著一個電阻器(通常為10kΩ左右),因此只會流過少量電流,不存在短路風險。
使用輕觸開關(guān)輸入數(shù)據(jù)
現(xiàn)在,讓我們使用輕觸開關(guān)實際輸入數(shù)據(jù)看看。需要準備好以下電子元器件:
? 輕觸開關(guān)
輕觸開關(guān)有很多種顏色可供選擇。您可以選擇任何您喜歡的顏色。
? 10kΩ (1/4W)電阻器
用于上拉電路的電阻器。在10kΩ電阻器上印有“棕黑橙金”顏色代碼。
準備好所需組件后,如下圖所示連接它們。將輕觸開關(guān)跨越面包板中心的凹槽插入。
接下來,將前述的程序發(fā)送給Arduino,以通過串行監(jiān)視器確認數(shù)字引腳7的輸入。可以看到,在未按下開關(guān)的狀態(tài)下,顯示“1”(HIGH),在按下開關(guān)時變?yōu)椤?”(LOW)。
使用Arduino上拉功能
在Arduino Uno中,數(shù)字引腳內(nèi)置有“上拉”功能,可以通過程序激活該功能。如果使用內(nèi)部的上拉功能,就不再需要外接電阻器了。您只需連接開關(guān)即可,省時省力。
激活上拉功能的程序如下:
您只需在第4行的數(shù)字引腳模式設置中指定“INPUT_PULLUP”即可。這樣就能激活內(nèi)置的上拉功能,從而能夠在未按下按鈕的狀態(tài)下穩(wěn)定HIGH輸入。請注意,Arduino Uno中未內(nèi)置下拉功能。
按下開關(guān)時點亮LED
開關(guān)的輸入還可用來控制其他電子元器件。在這里,讓我們利用Arduino中安裝的LED(引腳13),嘗試實現(xiàn)在按下開關(guān)時點亮LED,并在松開開關(guān)時熄滅LED。所用的電路與前述的僅將開關(guān)連接到數(shù)字引腳時的電路相同。編寫程序如下:
確認第14行的數(shù)字輸入值是否為“1”。在Arduino程序中,您也可以將“1”寫為“HIGH”,將“0”寫為“LOW”。為了便于理解,我們在這里使用“HIGH”和“LOW”。
如果輸入為HIGH(未按下按鈕),則執(zhí)行第15行,使引腳13切換到LOW,LED熄滅。如果輸入不是HIGH(按下按鈕),則執(zhí)行第17行,使引腳13切換到HIGH,LED點亮。將程序發(fā)送到Arduino并按下輕觸開關(guān),即可確認LED點亮。
我們成功了!現(xiàn)在,您可以在您的Arduino項目中使用開關(guān)來執(zhí)行輸入了。
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
240文章
23073瀏覽量
657082 -
開關(guān)狀態(tài)
+關(guān)注
關(guān)注
0文章
5瀏覽量
9146 -
Arduino
+關(guān)注
關(guān)注
187文章
6458瀏覽量
186504 -
輕觸開關(guān)
+關(guān)注
關(guān)注
0文章
62瀏覽量
1312
發(fā)布評論請先 登錄
相關(guān)推薦
評論