Hi,大家好!前兩次呢,我們一起學習了按鍵開關的基本使用。在每一次的電路連接過程中,我們每次都需要額外連接一個10k歐姆大小的電阻。話說如果只是想學習一下按鍵開關,就不得不需要額外再連接一個電阻,總覺得有點繁瑣,能不能去掉這個電阻呢?可喜可賀!答案是肯定的!
好!廢話不多啰嗦!讓我們直奔主題,看看是如何去掉那個電阻的!
首先,還是要我們做準備一下。
硬件方面
圖片來源:Arduino電路配件
具體包括如下:
- Arduino UNO電路板(1塊)
- 面包板(1塊)
- 按鍵開關(1個)
- 面包線(2根)
看!這次果然拋棄了電阻,還省了一根兒面包線,只用了兩根。測試用的LED神燈,還是用Arduino UNO電路板自帶的那盞。關于Arduino UNO電路板自帶的這盞LED神燈,這里就不再次贅述了。印象模糊的同學,可以翻看前兩次的實驗記錄。
軟件方面Arduino官方提供的IDE。
連接電路
圖片來源:Arduino連接開關按鍵電路示意圖
對于類似電路的連接,都是輕車熟路了吧?!這次更是簡單,只剩下了一個開關按鍵,真的是連電阻都沒有啦!下面進行最后一步!
添加幾行代碼首先還是讓我們新建一個項目窗口。
圖片來源:Arduino官方IDE
- // 對Arduino電路板或相關狀態進行初始化方法
- void setup() {
- // 開啟串行通信,并設置其頻率為9600。
- // 如果沒有特別要求,此數值一般都為9600。
- Serial.begin(9600);
- // 配置2號針腳為輸入狀態,
- // 并設置使用內部上拉電阻。
- pinMode(2, INPUT_PULLUP);
- // 定義LED輸入針腳號為13號針腳。
- // 注:此處我們使用的LED神燈是Arduino UNO電路板自帶,
- // 此神燈對應的針腳號默認為13,此數值不得隨意更改,
- // 所以這里定義的數值13是為了和默認值相對應。
- pinMode(13, OUTPUT);
- }
- // 系統調用,無限循環方法
- void loop() {
- // 讀取2號針腳上的輸入信號的數值
- int sensorVal = digitalRead(2);
- // 為了更直觀的看到2號針腳輸入的信號值,
- // 將獲取到的數值打印到串行調試窗口,方便調試。
- Serial.println(sensorVal);
- // 如果獲取到的數值為HIGH(數值大小等于1),
- // 則向13號針腳發送LOW信號(數值大小等于0),熄滅LED神燈,
- // 反之則發送HIGH信號(數值大小等于1),點亮LED神燈。
- if (sensorVal == HIGH) {
- digitalWrite(13, LOW);
- } else {
- digitalWrite(13, HIGH);
- }
- }
復制代碼
使用這個內部電阻還有一點需要注意,那就是它會將按鍵的輸入狀態取反。也就是說,當按鍵斷開的時候,輸入為HIGH,也就是數值為1,按鍵按下的時候,輸入為LOW,也就是數值為0。這也是為什么我們會在代碼的第70行進行一次if判斷,并將輸入狀態重新調整過來的原因。
圖片來源:Arduino官方IDE的文件編輯菜單選項
OK!點擊一下上圖中標有向右指向的箭頭圖標,將編寫好的代碼燒入Arduino UNO電路板。如果一切順利,此時就可以通過按下按鍵,讓LED神燈點亮,松開按鍵,LED神燈熄滅。同時,你還可以點擊上圖中最右邊的放大鏡圖標,打開串口調試窗口,查看實時的按鍵輸出狀態。
圖片來源:Arduino串口調試窗口
每次按下按鍵或松開按鍵,都可以從串口調試窗口中實時看到按鍵的輸入數值。
總結通過這次學習,我們知道了如何調用Arduino UNO自帶的內部上拉電阻,還了解到此上拉電阻會按鍵開關的輸入狀態進行取反。通過使用內部的上拉電阻,我們在使用開關按鍵的時候可以少連接一個外部電阻,將電路的連接變的更簡單。但相應的代價是,要將獲取到的數值進行取反。
下期預告經過這幾次對按鍵開關的學習,我們對按鍵開關的使用已經有了初步的掌握。下一次,我們將過去幾次的學習融合到一起,做一個小實驗,在用按鍵開關控制LED神燈的同時,我們將試著記錄按鍵開關的總按下次數!
ohcoder的系列精彩Arduino教程:
Arduino教程-初識Arduino(包含本教程目錄):http://www.zg4o1577.cn/bbs/dpj-41334-1.html
Arduino教程-開篇:http://www.zg4o1577.cn/bbs/dpj-41335-1.html
Arduino教程-點亮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教程-獲取輸入數字信號:http://www.zg4o1577.cn/bbs/dpj-41339-1.html
Arduino教程-獲取輸入模擬信號:http://www.zg4o1577.cn/bbs/dpj-41340-1.html
Arduino教程-另一種時間延遲:http://www.zg4o1577.cn/bbs/dpj-41331-1.html
Arduino教程-按鍵開關:http://www.zg4o1577.cn/bbs/dpj-41341-1.html
Arduino教程-停止抖動!:http://www.zg4o1577.cn/bbs/dpj-41333-1.html
Arduino教程-拋棄外部電阻!:http://www.zg4o1577.cn/bbs/dpj-41332-1.html
Arduino教程-用按鍵開關計數:http://www.zg4o1577.cn/bbs/dpj-41330-1.html
………后續持續更新中請打開:http://www.zg4o1577.cn/bbs/dpj-41334-1.html
|