久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

搜索
查看: 65374|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

Arduino教程-用按鍵開關(guān)計(jì)數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99556 發(fā)表于 2015-12-19 21:10 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Hi,大家好!今天我們將綜合之前學(xué)到的,關(guān)于如何更好的使用按鍵開關(guān)等相關(guān)知識(shí),做一個(gè)綜合的小實(shí)驗(yàn),看看如何用按鍵開關(guān)進(jìn)行計(jì)數(shù)。當(dāng)然,與其說(shuō)是用按鍵開關(guān)進(jìn)行計(jì)數(shù),其實(shí)不如說(shuō)是記錄按鍵開關(guān)的點(diǎn)擊次數(shù),嘿嘿!好!打起精神,讓我們開始吧!
首先,當(dāng)然還是老樣子,先要對(duì)所學(xué)的內(nèi)容做準(zhǔn)備。
硬件方面
圖片來(lái)源:Arduino電路配件
具體包括如下:
  • Arduino UNO電路板(1塊)
  • 面包板(1塊)
  • 10k電阻(1個(gè))
  • 按鍵開關(guān)(1個(gè))
  • 面包線(3根)
看!電路配件還是之前碰到的電路配件!沒有新面孔出現(xiàn),繼續(xù)!
軟件方面Arduino官方提供的IDE。
連接電路
圖片來(lái)源:Arduino連接開關(guān)按鍵電路示意圖
嗯!電路連接還是之前碰到的電路連接!簡(jiǎn)單吧!就剩下最后一步拉!
添加幾行代碼首先,還是新建一個(gè)項(xiàng)目窗口。

圖片來(lái)源:Arduino官方IDE
下面就不能再一樣了,哈哈!!不過,雖說(shuō)不一樣了,但也只是綜合了前面所學(xué)的相關(guān)知識(shí)。
  1. // 定義按鍵的針腳號(hào)為2的整型常量
  2. const int  buttonPin = 2;
  3. // 定義LED輸入針腳號(hào)為13號(hào)針腳
  4. // 注:此處我們使用的LED神燈是Arduino UNO電路板自帶,
  5. // 此神燈對(duì)應(yīng)的針腳號(hào)默認(rèn)為13,此數(shù)值不得隨意更改,
  6. // 所以這里定義的數(shù)值13是為了和默認(rèn)值相對(duì)應(yīng)。
  7. const int ledPin = 13;
  8. // 定義用來(lái)記錄按鍵次數(shù)的整型變量
  9. int buttonPushCounter = 0;
  10. // 記錄當(dāng)前按鍵的狀態(tài)
  11. int buttonState = 0;
  12. // 記錄按鍵之前的狀態(tài)
  13. int lastButtonState = 0;
  14. // 對(duì)Arduino電路板或相關(guān)狀態(tài)進(jìn)行初始化方法
  15. void setup() {
  16.   // 設(shè)置按鍵的針腳為輸入狀態(tài)
  17.   pinMode(buttonPin, INPUT);
  18.   // 設(shè)置電路板上LED神燈的針腳狀態(tài)為輸出狀態(tài)
  19.   pinMode(ledPin, OUTPUT);
  20.   // 開啟串行通信,并設(shè)置其頻率為9600。
  21.   // 如果沒有特別要求,此數(shù)值一般都為9600。
  22.   Serial.begin(9600);
  23. }
  24. // 系統(tǒng)調(diào)用,無(wú)限循環(huán)方法
  25. void loop() {
  26.   // 讀取按鍵的輸入狀態(tài)
  27.   buttonState = digitalRead(buttonPin);
  28.   // 判斷當(dāng)前的按鍵狀態(tài)是否和之前有所變化
  29.   if (buttonState != lastButtonState) {
  30.     // 判斷當(dāng)前按鍵是否為按下狀態(tài),
  31.     // 如果為按下狀態(tài),則記錄按鍵次數(shù)的變量加一。
  32.     if (buttonState == HIGH) {
  33.       // 將記錄按鍵次數(shù)的變量加一
  34.       buttonPushCounter++;
  35.       // 向串口調(diào)試終端打印字符串“on”,
  36.       // 表示當(dāng)前按鍵狀態(tài)為按下接通狀態(tài),
  37.       // 輸出完成之后自動(dòng)換行。
  38.       Serial.println("on");
  39.       // 向串口調(diào)試終端打印字符串
  40.       // “number of button pushes: ”,此處沒有換行。
  41.       Serial.print("number of button pushes:  ");
  42.       // 接著上一行尾部,打印記錄按鍵次數(shù)變量的數(shù)值。
  43.       Serial.println(buttonPushCounter);
  44.     } else {
  45.       // 向串口調(diào)試終端打印字符串“off”,
  46.       // 表示當(dāng)前按鍵狀態(tài)為松開狀態(tài),也即斷開狀態(tài)。
  47.       Serial.println("off");
  48.     }
  49.     // 為了避免信號(hào)互相干擾,
  50.     // 此處將每次按鍵的變化時(shí)間間隔延遲50毫秒。
  51.     delay(50);
  52.   }
  53.   // 將每次loop結(jié)束時(shí)最新的按鍵狀態(tài)進(jìn)行更新
  54.   lastButtonState = buttonState;
  55.   // 每點(diǎn)擊4次,更新一次LED神燈狀態(tài)。
  56.   // 這里的百分號(hào)是求余數(shù)的意思,
  57.   // 每次除以四,余數(shù)等于零說(shuō)明按鍵點(diǎn)擊的
  58.   // 次數(shù)是四的整數(shù)倍,即此時(shí)更新LED神燈。
  59.   if (buttonPushCounter % 4 == 0) {
  60.     // 點(diǎn)亮LED神燈
  61.     digitalWrite(ledPin, HIGH);
  62.   } else {
  63.     // 熄滅LED神燈
  64.     digitalWrite(ledPin, LOW);
  65.   }
  66. }
復(fù)制代碼


代碼看起來(lái)好像有點(diǎn)長(zhǎng)……其實(shí)呢,如果你仔細(xì)觀察,就會(huì)發(fā)現(xiàn),其實(shí)百分之八十的代碼都是之前學(xué)《另一種時(shí)間延遲》的時(shí)候?qū)W到的,而這次只是在其基礎(chǔ)上加入了計(jì)數(shù)的變量而已。如果覺得眼前的代碼有點(diǎn)眼暈,可以回過頭去溫習(xí)一下那篇文章。

圖片來(lái)源:Arduino官方IDE的文件編輯菜單選項(xiàng)
好!點(diǎn)擊一下上圖中標(biāo)有向右指向的箭頭圖標(biāo),將編寫好的代碼燒入Arduino UNO電路板。然后點(diǎn)擊上圖中最右側(cè)的放大鏡圖標(biāo),打開串口調(diào)試窗口,如下圖所示。

圖片來(lái)源:Arduino串口調(diào)試窗口
此時(shí),當(dāng)你每次按下或松開按鍵開關(guān),都會(huì)打印相應(yīng)的字符串,來(lái)顯示當(dāng)前的按鍵狀態(tài)。而與此同時(shí),Arduino UNO電路上的LED神燈,也會(huì)在你每按四次按鍵更新一次狀態(tài)。
總結(jié)通過此次練習(xí),我們沒有加入任何新知識(shí),總體而言,是對(duì)前面幾次的學(xué)習(xí)進(jìn)行了一次綜合運(yùn)用。如果哪一部分看起來(lái)有點(diǎn)兒頭暈,可以溫習(xí)一下過去的幾次所學(xué)。嗯,加油!
下期預(yù)告一連幾次總是學(xué)習(xí)按鍵開關(guān),是不是有點(diǎn)膩了?嗯,猜到了!下一次,我們將一起學(xué)習(xí)新內(nèi)容。以前呢,Arduino UNO這塊憨厚老實(shí)的電路板,總是默默無(wú)聞的任你使喚。接下來(lái),我們要讓她發(fā)出自己的聲音。答對(duì)了!我們要聽聽她那令人陶醉的歌喉!


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

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

使用道具 舉報(bào)

沙發(fā)
ID:159287 發(fā)表于 2017-1-2 00:03 | 只看該作者
特別感謝,有助于快速入門!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:501815 發(fā)表于 2019-4-14 09:07 | 只看該作者
感謝樓主~!
回復(fù)

使用道具 舉報(bào)

地板
ID:560595 發(fā)表于 2019-6-28 11:19 | 只看該作者
啥時(shí)候更新啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 玖玖久久 | 成年人的视频免费观看 | 日韩成人精品 | 亚洲免费在线观看av | av手机免费在线观看 | 毛片在线看片 | 色爱综合网 | 91色站| 婷婷开心激情综合五月天 | 欧美日韩在线免费观看 | 亚洲精品视频在线 | 九热在线 | 久草热在线 | 夜久久| 在线色| 色婷婷激情 | 黄免费观看 | 欧美一区二区三区四区五区无卡码 | 三级在线观看 | 亚洲 91| 97在线观视频免费观看 | 亚洲精品久久久久久久久久久久久 | 国产区精品视频 | 国产亚洲一区二区精品 | 色永久| 国产区在线免费观看 | 好好的日在线视频 | 免费国产黄网站在线观看视频 | 国产欧美日韩在线观看 | 一区二区免费视频 | 日韩高清一区 | 中文字幕日韩欧美 | 久久大陆 | 亚洲精品乱码 | 免费中文字幕 | 国产免费让你躁在线视频 | 女人天堂av | 久久精品一区 | 日本电影一区二区 | 在线免费看91 | 久久999|