找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 48602|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

Arduino教程-按鍵開關(guān)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99556 發(fā)表于 2015-12-19 21:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Hi,大家好!今天我們正式學(xué)習(xí)一個(gè)新的元器件,它就是按鍵開關(guān)!說是正式學(xué)習(xí),其實(shí)之前我們?cè)缇鸵呀?jīng)接觸過,而且還正確的連接過它的電路呢!有印象么?在之前的獲取輸入數(shù)字信號(hào)那一節(jié)!這一次與它相遇,我們要正式學(xué)習(xí)如何使用它控制一盞神燈!
既然之前我們已經(jīng)接觸過,想必這次學(xué)起來要簡(jiǎn)單的多啦!
好!廢話不多說,先看一下這次都需要做哪些準(zhǔn)備。
硬件方面
圖片來源:Arduino電路配件
具體包括如下:
  • Arduino UNO電路板(1塊)
  • 面包板(1塊)
  • 10k電阻(1個(gè))
  • 按鍵開關(guān)(1個(gè))
  • 面包線(3根)
咦?怎么沒發(fā)現(xiàn)硬件準(zhǔn)備中的LED神燈?問的好!這次偷偷的告訴你一個(gè)小秘密,其實(shí)Arduino UNO電路板自身就帶有一盞神燈,這盞神燈對(duì)應(yīng)的針腳號(hào)為13。仔細(xì)看上圖中Arduino UNO電路板,在電路板中上方的位置,差不多正對(duì)GND標(biāo)示和數(shù)字13的正下方,有一個(gè)標(biāo)號(hào)為L(zhǎng)的白色長(zhǎng)方形,沒錯(cuò)!那就是這盞神燈。這盞神燈默認(rèn)的信號(hào)輸入針腳為數(shù)字信號(hào)13號(hào)針腳。
因?yàn)檫@次我們的學(xué)習(xí)重點(diǎn)是按鍵,所以為了簡(jiǎn)化電路的連接,我們默認(rèn)就使用Arduino UNO電路板自帶的那盞神燈啦!
好,下面是軟件的準(zhǔn)備!
軟件方面Arduino官方提供的IDE。不必多說!
連接電路
圖片來源:Arduino連接開關(guān)按鍵電路示意圖
電路的連接,在之前的獲取輸入數(shù)字信號(hào)那節(jié)我們已經(jīng)做過,這里除了需要注意Arduino UNO電路板自帶的那盞神燈以外,沒有新的內(nèi)容。
下面是最后一步!
添加幾行代碼最后一個(gè)環(huán)節(jié),就是讓我們添加幾行驅(qū)動(dòng)硬件的代碼。
首先,新建一個(gè)項(xiàng)目窗口。

圖片來源:Arduino官方IDE



  1. // 這里的輸入和輸出是針對(duì)Arduino電路板而言
  2. // 定義按鍵輸入針腳號(hào)為2號(hào)針腳
  3. const int buttonPin = 2;
  4. // 定義LED輸入針腳號(hào)為13號(hào)針腳
  5. // 注:此處我們使用的LED神燈是Arduino UNO電路板自帶,
  6. // 此神燈對(duì)應(yīng)的針腳號(hào)默認(rèn)為13,此數(shù)值不得隨意更改,
  7. // 所以這里定義的數(shù)值13是為了和默認(rèn)值相對(duì)應(yīng)。
  8. const int ledPin =  13;
  9. // 定義按鍵狀態(tài)變量初始值為0
  10. int buttonState = 0;

  11. // 對(duì)Arduino電路板或相關(guān)狀態(tài)進(jìn)行初始化方法
  12. void setup() {
  13.   // 設(shè)置ledPin端口為輸出端口
  14.   pinMode(ledPin, OUTPUT);
  15.   // 設(shè)置buttonPin端口為輸入端口
  16.   pinMode(buttonPin, INPUT);
  17. }

  18. // 系統(tǒng)調(diào)用,無限循環(huán)方法
  19. void loop() {
  20.   // 讀取按鍵狀態(tài)
  21.   buttonState = digitalRead(buttonPin);

  22.   // 檢查按鍵狀態(tài),
  23.   // 如果為HIGH,
  24.   // 則點(diǎn)亮LED神燈,
  25.   // 否則熄滅LED神燈。
  26.   if (buttonState == HIGH) {
  27.     // 點(diǎn)亮LED神燈
  28.     digitalWrite(ledPin, HIGH);
  29.   } else {
  30.     // 熄滅LED神燈
  31.     digitalWrite(ledPin, LOW);
  32.   }
  33. }
復(fù)制代碼



嗯,全部代碼就是這些!所調(diào)用的方法我們應(yīng)該全都已經(jīng)見過,這里并沒有新的面孔出現(xiàn)。可能只有一點(diǎn)是新的,那就是我們這次使用的LED神燈,是Arduino UNO電路板自帶的,此盞神燈默認(rèn)對(duì)應(yīng)的針腳號(hào)為13,是不能隨意更改的,所以我們要想控制此神燈,需要向13號(hào)針腳輸入數(shù)字信號(hào),這就是為什么上面我們定義LED針腳號(hào)的時(shí)候,數(shù)字為13的原因。也就是說,只有向13號(hào)針腳輸入信號(hào),才可以控制這盞神燈的亮和滅。

圖片來源:Arduino官方IDE的文件編輯菜單選項(xiàng)
點(diǎn)擊上圖中標(biāo)有向右指向的箭頭圖標(biāo),將代碼燒入Arduino UNO電路板。成功之后,試試看點(diǎn)擊開關(guān)按鍵,此時(shí)能否點(diǎn)亮和熄滅電路板上的那盞神燈!如果燒入失敗,請(qǐng)檢查是代碼編譯錯(cuò)誤,還是將代碼燒入電路板的過程中出現(xiàn)錯(cuò)誤?如果是代碼錯(cuò)誤,請(qǐng)認(rèn)真核對(duì)代碼,如果是燒入代碼時(shí)出現(xiàn)的錯(cuò)誤,可以點(diǎn)擊工具欄中的Tools,查看Port的選項(xiàng),是否選中的是usbmodem連接模式。
總結(jié)通過這次學(xué)習(xí),我們正式的了解如何使用按鍵進(jìn)行控制。順便還了解了一盞Arduino UNO自身就有的LED神燈,對(duì)Arduino UNO電路板又增進(jìn)了一些認(rèn)識(shí)。這次編寫的代碼中,沒有出現(xiàn)新的面孔,電路方面所涉及到的只有數(shù)字信號(hào),總而言之呢,可以看作是對(duì)我們之前所學(xué)進(jìn)行了鞏固。
下期預(yù)告雖然通過這次學(xué)習(xí),我們知道了如何用按鍵開關(guān)控制其他電器元件,比如LED神燈。由于電路的一些固有特性,美中不足,此時(shí)按鍵開關(guān)還有一些小問題。下一次,我們將修復(fù)這個(gè)問題,完善按鈕開關(guān),讓其達(dá)到完美的狀態(tài)!

ohcoder的系列精彩Arduino教程:
Arduino教程-初識(shí)Arduino(包含本教程目錄):http://www.torrancerestoration.com/bbs/dpj-41334-1.html
Arduino教程-開篇:http://www.torrancerestoration.com/bbs/dpj-41335-1.html
Arduino教程-點(diǎn)亮LED神燈:http://www.torrancerestoration.com/bbs/dpj-41336-1.html
Arduino教程-讓LED神燈閃爍:http://www.torrancerestoration.com/bbs/dpj-41337-1.html
Arduino教程-讓LED神燈亮度漸變:http://www.torrancerestoration.com/bbs/dpj-41338-1.html
Arduino教程-獲取輸入數(shù)字信號(hào):http://www.torrancerestoration.com/bbs/dpj-41339-1.html
Arduino教程-獲取輸入模擬信號(hào):http://www.torrancerestoration.com/bbs/dpj-41340-1.html
Arduino教程-另一種時(shí)間延遲:http://www.torrancerestoration.com/bbs/dpj-41331-1.html
Arduino教程-按鍵開關(guān):http://www.torrancerestoration.com/bbs/dpj-41341-1.html
Arduino教程-停止抖動(dòng)!:http://www.torrancerestoration.com/bbs/dpj-41333-1.html
Arduino教程-拋棄外部電阻!:http://www.torrancerestoration.com/bbs/dpj-41332-1.html
Arduino教程-用按鍵開關(guān)計(jì)數(shù):http://www.torrancerestoration.com/bbs/dpj-41330-1.html

………后續(xù)持續(xù)更新中請(qǐng)打開:http://www.torrancerestoration.com/bbs/dpj-41334-1.html
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:997770 發(fā)表于 2021-12-28 15:17 | 只看該作者
這里為什么加個(gè)10K電阻和接地線��?取消這倆可以嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:997770 發(fā)表于 2021-12-28 15:18 | 只看該作者
這里的10K電阻和地線取消可以嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:1066360 發(fā)表于 2023-3-13 15:52 | 只看該作者
小明少爺 發(fā)表于 2021-12-28 15:18
這里的10K電阻和地線取消可以嗎

那肯定不行啊,這是輸出電源,取消了就相當(dāng)于你裝電池只接了正極,那你電池能起作用嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:1068934 發(fā)表于 2023-4-9 13:45 來自手機(jī) | 只看該作者
基于android的超聲波尺子
回復(fù)

使用道具 舉報(bào)

6#
ID:871721 發(fā)表于 2023-4-13 00:16 來自手機(jī) | 只看該作者
不需要按鍵消抖嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:357328 發(fā)表于 2023-5-19 09:17 | 只看該作者
差評(píng),沒做防抖,
回復(fù)

使用道具 舉報(bào)

8#
ID:357328 發(fā)表于 2023-5-19 09:18 | 只看該作者

就是,不做防抖容易不靈敏
回復(fù)

使用道具 舉報(bào)

9#
ID:1078030 發(fā)表于 2023-5-28 16:03 | 只看該作者
arduino IDE 可以嵌套匯編里面的消抖nop  非常好用
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表