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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 65629|回復: 3
收起左側

Arduino教程-用按鍵開關計數

[復制鏈接]
ID:99556 發表于 2015-12-19 21:10 | 顯示全部樓層 |閱讀模式
Hi,大家好!今天我們將綜合之前學到的,關于如何更好的使用按鍵開關等相關知識,做一個綜合的小實驗,看看如何用按鍵開關進行計數。當然,與其說是用按鍵開關進行計數,其實不如說是記錄按鍵開關的點擊次數,嘿嘿!好!打起精神,讓我們開始吧!
首先,當然還是老樣子,先要對所學的內容做準備。
硬件方面 arduino-read-digital.jpg
圖片來源:Arduino電路配件
具體包括如下:
  • Arduino UNO電路板(1塊)
  • 面包板(1塊)
  • 10k電阻(1個)
  • 按鍵開關(1個)
  • 面包線(3根)
看!電路配件還是之前碰到的電路配件!沒有新面孔出現,繼續!
軟件方面Arduino官方提供的IDE。
連接電路 arduino-ide-new.jpg
圖片來源:Arduino連接開關按鍵電路示意圖
嗯!電路連接還是之前碰到的電路連接!簡單吧!就剩下最后一步拉!
添加幾行代碼首先,還是新建一個項目窗口。
arduino-menu.jpg
圖片來源:Arduino官方IDE
下面就不能再一樣了,哈哈!!不過,雖說不一樣了,但也只是綜合了前面所學的相關知識。
  1. // 定義按鍵的針腳號為2的整型常量
  2. const int  buttonPin = 2;
  3. // 定義LED輸入針腳號為13號針腳
  4. // 注:此處我們使用的LED神燈是Arduino UNO電路板自帶,
  5. // 此神燈對應的針腳號默認為13,此數值不得隨意更改,
  6. // 所以這里定義的數值13是為了和默認值相對應。
  7. const int ledPin = 13;
  8. // 定義用來記錄按鍵次數的整型變量
  9. int buttonPushCounter = 0;
  10. // 記錄當前按鍵的狀態
  11. int buttonState = 0;
  12. // 記錄按鍵之前的狀態
  13. int lastButtonState = 0;
  14. // 對Arduino電路板或相關狀態進行初始化方法
  15. void setup() {
  16.   // 設置按鍵的針腳為輸入狀態
  17.   pinMode(buttonPin, INPUT);
  18.   // 設置電路板上LED神燈的針腳狀態為輸出狀態
  19.   pinMode(ledPin, OUTPUT);
  20.   // 開啟串行通信,并設置其頻率為9600。
  21.   // 如果沒有特別要求,此數值一般都為9600。
  22.   Serial.begin(9600);
  23. }
  24. // 系統調用,無限循環方法
  25. void loop() {
  26.   // 讀取按鍵的輸入狀態
  27.   buttonState = digitalRead(buttonPin);
  28.   // 判斷當前的按鍵狀態是否和之前有所變化
  29.   if (buttonState != lastButtonState) {
  30.     // 判斷當前按鍵是否為按下狀態,
  31.     // 如果為按下狀態,則記錄按鍵次數的變量加一。
  32.     if (buttonState == HIGH) {
  33.       // 將記錄按鍵次數的變量加一
  34.       buttonPushCounter++;
  35.       // 向串口調試終端打印字符串“on”,
  36.       // 表示當前按鍵狀態為按下接通狀態,
  37.       // 輸出完成之后自動換行。
  38.       Serial.println("on");
  39.       // 向串口調試終端打印字符串
  40.       // “number of button pushes: ”,此處沒有換行。
  41.       Serial.print("number of button pushes:  ");
  42.       // 接著上一行尾部,打印記錄按鍵次數變量的數值。
  43.       Serial.println(buttonPushCounter);
  44.     } else {
  45.       // 向串口調試終端打印字符串“off”,
  46.       // 表示當前按鍵狀態為松開狀態,也即斷開狀態。
  47.       Serial.println("off");
  48.     }
  49.     // 為了避免信號互相干擾,
  50.     // 此處將每次按鍵的變化時間間隔延遲50毫秒。
  51.     delay(50);
  52.   }
  53.   // 將每次loop結束時最新的按鍵狀態進行更新
  54.   lastButtonState = buttonState;
  55.   // 每點擊4次,更新一次LED神燈狀態。
  56.   // 這里的百分號是求余數的意思,
  57.   // 每次除以四,余數等于零說明按鍵點擊的
  58.   // 次數是四的整數倍,即此時更新LED神燈。
  59.   if (buttonPushCounter % 4 == 0) {
  60.     // 點亮LED神燈
  61.     digitalWrite(ledPin, HIGH);
  62.   } else {
  63.     // 熄滅LED神燈
  64.     digitalWrite(ledPin, LOW);
  65.   }
  66. }
復制代碼


代碼看起來好像有點長……其實呢,如果你仔細觀察,就會發現,其實百分之八十的代碼都是之前學《另一種時間延遲》的時候學到的,而這次只是在其基礎上加入了計數的變量而已。如果覺得眼前的代碼有點眼暈,可以回過頭去溫習一下那篇文章。

圖片來源:Arduino官方IDE的文件編輯菜單選項
好!點擊一下上圖中標有向右指向的箭頭圖標,將編寫好的代碼燒入Arduino UNO電路板。然后點擊上圖中最右側的放大鏡圖標,打開串口調試窗口,如下圖所示。

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


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

………后續持續更新中請打開:http://m.zg4o1577.cn/bbs/dpj-41334-1.html
回復

使用道具 舉報

ID:159287 發表于 2017-1-2 00:03 | 顯示全部樓層
特別感謝,有助于快速入門!!!
回復

使用道具 舉報

ID:501815 發表于 2019-4-14 09:07 | 顯示全部樓層
感謝樓主~!
回復

使用道具 舉報

ID:560595 發表于 2019-6-28 11:19 | 顯示全部樓層
啥時候更新啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品久久久久久久久 | 超碰在线网站 | 国产成人久久av免费高清密臂 | 久久国产精品无码网站 | 中文字幕高清av | 久草免费电影 | 91精品国产综合久久久久久丝袜 | 亚洲成人精 | 国产精品视频一区二区三区不卡 | 日本爱爱| 国产伊人精品 | 日韩在线视频一区 | 91免费在线 | 成人免费看片 | 欧美成人激情视频 | 韩国精品在线观看 | 欧美日韩成人影院 | 天天躁人人躁人人躁狂躁 | 亚洲精品一区二区二区 | 一级黄色影片在线观看 | 欧美高清一区 | 一区久久| 久久国产欧美日韩精品 | 一区二区三区高清 | 中文字幕av网 | 欧美精品第一区 | 国产午夜在线观看 | 成人h电影在线观看 | 日韩欧美在| 亚洲高清在线 | 亚洲欧美中文日韩在线v日本 | 精品99在线| 欧美一区二区三区精品免费 | 天天天操天天天干 | 日韩在线视频免费观看 | 欧美日韩在线精品 | 久久久久国产一区二区三区四区 | 国产黄色免费网站 | 精品欧美激情在线观看 | 国产中文视频 | 亚洲精品国产成人 |