<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Arduino基礎:讀取開關狀態

劉英 ? 來源:Oo一笑 ? 作者:Oo一笑 ? 2023-02-20 09:47 ? 次閱讀

這篇文章來源于DevicePlus.com英語網站的翻譯稿。

本文最初發布在deviceplus.jp.網站上,而后被翻譯成英語。

前言

在本文中,您可以了解如何在您的Arduino項目中使用輕觸開關以及其實際工作原理。

我們已經利用數字輸出使數字輸出引腳在HIGH (5V) 和LOW (0V) 兩種狀態之間切換,從而實現了對LED電機的控制。
另外,您還可以使用數字輸出來確認電子部件的狀態。數字輸出引腳還可以切換為數字輸入引腳。通過這樣切換,可以確認引腳上的電壓,并通過“LOW”和“HIGH”兩種狀態輸入。這些輸入值可用于控制其他電子部件。比如您可能希望在數字輸入為HIGH時使電機運轉,在輸入為LOW時使電機停止。

poYBAGPy0GSAJ66NAAHIKLKLijs466.png

實際上,利用開關等電子器件,可以使數字輸入引腳的狀態切換為0V或5V。
在本文中,我們將介紹如何使用開關實現數字輸入。

Arduino的數字輸入

使用Arduino Uno,您可以將最初用于數字輸出的引腳D0到D13作為數字輸入引腳使用??梢酝ㄟ^程序切換為數字輸入模式,來確認引腳狀態。

0V輸入為“LOW”,5V輸入為“HIGH”。在程序中,LOW會被讀取為“0”,HIGH會被讀取為“1”。通過確認這些輸入值并執行條件分支等處理,即可控制工作狀態。

pYYBAGPy0GyAUt4nAAOcGY0Dd38603.png

下面我們來實際嘗試一下用Arduino進行數字輸入。在這里,我們使用跳線連接引腳5,并確認連接到5V電源和GND時的變化。創建以下程序并將其發送給Arduino:

在第4行中,通過pinMode()指定“INPUT”,以將本次使用的引腳7切換為輸入模式?,F在,您可以通過程序確認引腳狀態了。

獲取第11行由digitalRead()指定的引腳的狀態,并將其存儲在value變量中。如果是0V,則存儲為“0”,如果是5V,則存儲為“1”。

當您想確認獲取的狀態時,請使用“串行監視器”。對于Arduino而言,您可以使用用來從電腦傳輸程序的USB數據線將數據從Arduino發送到電腦。使用串行通信可以收發數據。您可以使用串行通信將通過數字輸入獲取的狀態發送到電腦進行確認。

如果您想在程序中使用串行通信,請通過第5行的Serial.begin()進行初始化。此時需要指定通信速度。然后,通過第12行的Serial.println()指定一個值,即可將數據發送到電腦。在本文中,我們使之發送存儲著數字輸入狀態的value變量的內容。

要確認Arduino通過串行通信發送過來的數據時,請使用Arduino IDE中內置的“串行監視器”。要使用串口監視器,請單擊Arduino IDE右上角的“串口監視器圖標”(放大鏡圖標),即可顯示串行監視器畫面。將右下角的通信速度設置為與程序的Serial.begin()中指定的通信速度(本文為9600)相同的值。然后,屏幕上將會顯示0或1。

pYYBAGPy0G6AfKF1AAClSjZ9c6k040.png

接下來,將跳線插入引腳7。將另一端連接到 GND,串行監視器上顯示“0”。也就是說,如果數字引腳為0V,您可以看到“0”(LOW)。同樣,當引腳7與5V電源連接時,您可以看到顯示內容變為“1”(HIGH)。

pYYBAGPy0HGAZAjsAADbsHJ8gnw176.png

現在我們已經確認,輸入會根據引腳的狀態發生變化。

使用輕觸開關切換輸入

下面,我們嘗試用一個開關使數字輸入引腳在HIGH和LOW狀態之間切換。在本文中,我們使用的是按鈕型“輕觸開關”。

poYBAGPy0HSAU2jgAAEsHrpKtTI129.png

對于輕觸開關而言,當按下上方按鈕時,內部電路接通,進入通電狀態。當松開按鈕時,電路斷開,沒有電流流過。通常,在開關的四個角會配有引腳。如上圖所示配置時,左右引腳之間的間隙起到開關的作用。右側的上下引腳和左側的上下引腳是始終連接的。
如果將輕觸開關的一個引腳與數字引腳相連接,另一引腳連接到GND,則按下開關時內部電路會接通,引腳將直連GND。通過這樣做,您可以判斷只要按下開關,數字輸入就會變為“HIGH”。

poYBAGPy0HiAB0s9AAFtPW_4cKU450.png

但是,當沒有按下開關時,數字引腳將會處于沒有任何連接的狀態。在這種狀態下,施加在引腳上的電壓會變得不穩定。在不穩定狀態下,當用手觸碰引腳或有電池等靠近時,輸入可能會發生變化。
因此,我們在使用開關時會連接一種稱為“上拉電路”或“下拉電路”的電路。這種方法是借助電阻器將數字引腳連接到電源或GND,可以起到穩定輸入狀態的作用。該電路連接到電源端時稱為“上拉電路”,連接到GND端時稱為“下拉電路”。在本文中將以上拉電路為例進行說明,但下拉電路的原理也是一樣的。

pYYBAGPy0HyAHjInAAFcgwOTAdg268.png

使用上拉電路時,在未按下開關的狀態下,開關通過一個電阻器連接到電源。這樣,就與數字引腳連接電源時的狀態相同,輸入會穩定在5V(HIGH)。當按下開關后,數字引腳處于直接連接GND的狀態,因此輸入切換為0V(LOW)。
雖然處于電源與GND連接的狀態,但它們之間夾著一個電阻器(通常為10kΩ左右),因此只會流過少量電流,不存在短路風險。

使用輕觸開關輸入數據

現在,讓我們使用輕觸開關實際輸入數據看看。需要準備好以下電子元器件

? 輕觸開關
poYBAGPy0ICAOLQ_AAEZoxHeJxk147.png
輕觸開關有很多種顏色可供選擇。您可以選擇任何您喜歡的顏色。

? 10kΩ (1/4W)電阻器
pYYBAGPy0IiAE2bRAAMtfV4tpIE003.png
用于上拉電路的電阻器。在10kΩ電阻器上印有“棕黑橙金”顏色代碼。

準備好所需組件后,如下圖所示連接它們。將輕觸開關跨越面包板中心的凹槽插入。

poYBAGPy0I6AUeGpAALMtIbZ8_s911.png

接下來,將前述的程序發送給Arduino,以通過串行監視器確認數字引腳7的輸入??梢钥吹?,在未按下開關的狀態下,顯示“1”(HIGH),在按下開關時變為“0”(LOW)。

使用Arduino上拉功能

在Arduino Uno中,數字引腳內置有“上拉”功能,可以通過程序激活該功能。如果使用內部的上拉功能,就不再需要外接電阻器了。您只需連接開關即可,省時省力。

pYYBAGPy0JOAJnnXAAKZuLeyCVo946.png

激活上拉功能的程序如下:

您只需在第4行的數字引腳模式設置中指定“INPUT_PULLUP”即可。這樣就能激活內置的上拉功能,從而能夠在未按下按鈕的狀態下穩定HIGH輸入。請注意,Arduino Uno中未內置下拉功能。

按下開關時點亮LED

開關的輸入還可用來控制其他電子元器件。在這里,讓我們利用Arduino中安裝的LED(引腳13),嘗試實現在按下開關時點亮LED,并在松開開關時熄滅LED。所用的電路與前述的僅將開關連接到數字引腳時的電路相同。編寫程序如下:

確認第14行的數字輸入值是否為“1”。在Arduino程序中,您也可以將“1”寫為“HIGH”,將“0”寫為“LOW”。為了便于理解,我們在這里使用“HIGH”和“LOW”。

如果輸入為HIGH(未按下按鈕),則執行第15行,使引腳13切換到LOW,LED熄滅。如果輸入不是HIGH(按下按鈕),則執行第17行,使引腳13切換到HIGH,LED點亮。將程序發送到Arduino并按下輕觸開關,即可確認LED點亮。

我們成功了!現在,您可以在您的Arduino項目中使用開關來執行輸入了。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    237

    文章

    22550

    瀏覽量

    646862
  • 開關狀態
    +關注

    關注

    0

    文章

    5

    瀏覽量

    9133
  • Arduino
    +關注

    關注

    185

    文章

    6434

    瀏覽量

    185272
  • 輕觸開關
    +關注

    關注

    0

    文章

    61

    瀏覽量

    1218
收藏 人收藏

    評論

    相關推薦

    請問撥碼開關需要加上拉電阻嗎?

    撥碼開關需要加上拉電阻嗎?不加可以讀取開關狀態嗎?
    發表于 09-11 21:17

    如何將開關的開/斷狀態轉變成Arduino能夠讀取的高/低電平

    如何將開關的開/斷狀態轉變成Arduino能夠讀取的高/低電平。解決的辦法是通過上 /下拉電阻,按照電路的不同通常又可以分為正邏輯(Positive Logic)和負邏輯(Invert
    發表于 01-17 08:35

    通過Arduino R3開放板讀取LM35溫度傳感器參數

    一、介紹通過Arduino R3開放板讀取LM35溫度傳感器參數,將參數轉換成溫度值,根據溫度值開發板發出高電平,將繼電器常開開關打開,使風扇處于通電狀態,風扇自動轉動;當溫度低于設定
    發表于 01-27 06:20

    使用Arduino讀取MPU6050數據的程序免費下載

    本文檔的主要內容詳細介紹的是使用Arduino讀取MPU6050數據的程序免費下載。
    發表于 07-24 17:17 ?27次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>讀取</b>MPU6050數據的程序免費下載

    Arduino讀取MPU9250傳感器

    電子發燒友網站提供《用Arduino讀取MPU9250傳感器.zip》資料免費下載
    發表于 10-19 09:15 ?2次下載
    用<b class='flag-5'>Arduino</b><b class='flag-5'>讀取</b>MPU9250傳感器

    讀取負張力的Arduino示波器的想法

    電子發燒友網站提供《讀取負張力的Arduino示波器的想法.zip》資料免費下載
    發表于 10-31 15:10 ?0次下載
    <b class='flag-5'>讀取</b>負張力的<b class='flag-5'>Arduino</b>示波器的想法

    Arduino讀取DHT22(或DHT11)

    電子發燒友網站提供《用Arduino讀取DHT22(或DHT11).zip》資料免費下載
    發表于 11-16 11:02 ?1次下載
    用<b class='flag-5'>Arduino</b><b class='flag-5'>讀取</b>DHT22(或DHT11)

    Arduino充當玻璃容器中的控制器和傳感器讀取

    電子發燒友網站提供《讓Arduino充當玻璃容器中的控制器和傳感器讀取器.zip》資料免費下載
    發表于 11-22 14:27 ?0次下載
    讓<b class='flag-5'>Arduino</b>充當玻璃容器中的控制器和傳感器<b class='flag-5'>讀取</b>器

    Arduino庫來讀取DHT11濕度和溫度傳感器數據

    電子發燒友網站提供《用Arduino庫來讀取DHT11濕度和溫度傳感器數據.zip》資料免費下載
    發表于 11-22 10:45 ?0次下載
    用<b class='flag-5'>Arduino</b>庫來<b class='flag-5'>讀取</b>DHT11濕度和溫度傳感器數據

    Arduino HDC2010讀取數據和舒適區警報

    電子發燒友網站提供《Arduino HDC2010讀取數據和舒適區警報.zip》資料免費下載
    發表于 12-09 09:35 ?1次下載
    <b class='flag-5'>Arduino</b> HDC2010<b class='flag-5'>讀取</b>數據和舒適區警報

    PROFINET IO 設備讀取模塊的狀態信息

    “ModuleStates”指令可用來讀取 PROFINET IO 設備或 PROFIBUS DP 從站的模塊狀態信息。
    的頭像 發表于 05-19 14:19 ?2460次閱讀
    PROFINET IO 設備<b class='flag-5'>讀取</b>模塊的<b class='flag-5'>狀態</b>信息

    如何通過Arduino讀取電表

    電子發燒友網站提供《如何通過Arduino讀取電表.zip》資料免費下載
    發表于 06-16 15:18 ?1次下載
    如何通過<b class='flag-5'>Arduino</b><b class='flag-5'>讀取</b>電表

    用GPIO讀取按鈕狀態

    樹莓派的GPIO可以控制發光二極管,這是GPIO的Output(輸出)能力,它也具有input(讀取)的能力,所以才能叫做I/O(輸入/輸出)端口。今天我們就來用GPIO的引腳來讀取按鈕的狀態。
    的頭像 發表于 07-02 15:06 ?1014次閱讀
    用GPIO<b class='flag-5'>讀取</b>按鈕<b class='flag-5'>狀態</b>

    Arduino之如何逐行讀取SD卡文本文件

    電子發燒友網站提供《Arduino之如何逐行讀取SD卡文本文件.zip》資料免費下載
    發表于 07-12 10:17 ?1次下載
    <b class='flag-5'>Arduino</b>之如何逐行<b class='flag-5'>讀取</b>SD卡文本文件

    通過SFC 51讀取CPU的指示燈狀態

    可以通過SFC 51讀取CPU的指示燈狀態,使用的SSL_ID參數為16#74(16#19)讀取全部指示燈狀態 或者16#174(16#119)讀取
    的頭像 發表于 07-24 16:34 ?936次閱讀
    通過SFC 51<b class='flag-5'>讀取</b>CPU的指示燈<b class='flag-5'>狀態</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>