找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 48728|回復: 8
收起左側(cè)

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

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



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

  11. // 對Arduino電路板或相關(guān)狀態(tài)進行初始化方法
  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.   // 則點亮LED神燈,
  25.   // 否則熄滅LED神燈。
  26.   if (buttonState == HIGH) {
  27.     // 點亮LED神燈
  28.     digitalWrite(ledPin, HIGH);
  29.   } else {
  30.     // 熄滅LED神燈
  31.     digitalWrite(ledPin, LOW);
  32.   }
  33. }
復制代碼



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

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

ohcoder的系列精彩Arduino教程:
Arduino教程-初識Arduino(包含本教程目錄):http://www.torrancerestoration.com/bbs/dpj-41334-1.html
Arduino教程-開篇:http://www.torrancerestoration.com/bbs/dpj-41335-1.html
Arduino教程-點亮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ù)字信號:http://www.torrancerestoration.com/bbs/dpj-41339-1.html
Arduino教程-獲取輸入模擬信號:http://www.torrancerestoration.com/bbs/dpj-41340-1.html
Arduino教程-另一種時間延遲:http://www.torrancerestoration.com/bbs/dpj-41331-1.html
Arduino教程-按鍵開關(guān):http://www.torrancerestoration.com/bbs/dpj-41341-1.html
Arduino教程-停止抖動!:http://www.torrancerestoration.com/bbs/dpj-41333-1.html
Arduino教程-拋棄外部電阻!:http://www.torrancerestoration.com/bbs/dpj-41332-1.html
Arduino教程-用按鍵開關(guān)計數(shù):http://www.torrancerestoration.com/bbs/dpj-41330-1.html

………后續(xù)持續(xù)更新中請打開:http://www.torrancerestoration.com/bbs/dpj-41334-1.html
回復

使用道具 舉報

ID:997770 發(fā)表于 2021-12-28 15:17 | 顯示全部樓層
這里為什么加個10K電阻和接地線�。咳∠@倆可以嗎
回復

使用道具 舉報

ID:997770 發(fā)表于 2021-12-28 15:18 | 顯示全部樓層
這里的10K電阻和地線取消可以嗎
回復

使用道具 舉報

ID:1066360 發(fā)表于 2023-3-13 15:52 | 顯示全部樓層
小明少爺 發(fā)表于 2021-12-28 15:18
這里的10K電阻和地線取消可以嗎

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

使用道具 舉報

ID:1068934 發(fā)表于 2023-4-9 13:45 來自觸屏版 | 顯示全部樓層
基于android的超聲波尺子
回復

使用道具 舉報

ID:871721 發(fā)表于 2023-4-13 00:16 來自觸屏版 | 顯示全部樓層
不需要按鍵消抖嗎
回復

使用道具 舉報

ID:357328 發(fā)表于 2023-5-19 09:17 | 顯示全部樓層
差評,沒做防抖,
回復

使用道具 舉報

ID:357328 發(fā)表于 2023-5-19 09:18 | 顯示全部樓層

就是,不做防抖容易不靈敏
回復

使用道具 舉報

ID:1078030 發(fā)表于 2023-5-28 16:03 | 顯示全部樓層
arduino IDE 可以嵌套匯編里面的消抖nop  非常好用
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表