你好,我是愛(ài)吃魚(yú)香ROS的小魚(yú)。上一節(jié)完成了LED燈的控制,本節(jié)我們學(xué)習(xí)下如何使用按鍵。
本教程所使用硬件平臺(tái)為MicroROS學(xué)習(xí)板V1.0.0,可點(diǎn)擊閱讀原文購(gòu)買(mǎi)及查看詳情
一、 按鍵檢測(cè)原理
上面的原理圖就是我們MicroROS開(kāi)發(fā)板的BOOT按鍵的原理圖,該按鍵的位置在板子的左下角。
簡(jiǎn)單的看下原理圖可知
- 當(dāng)
BOOT
按下時(shí),1,2就被連通了,此時(shí)ESP_IO2
就連接到了GND
上,也就是連接到GND
,ESP_IO2
的電平被拉低了。 - 當(dāng)
BOOT
沒(méi)有按下時(shí),ESP_IO0
通過(guò)R10
連接到了3.3V
,ESP_IO2
引腳上的電壓就被拉高了。
二、 使用按鍵控制LED燈(無(wú)自鎖)
新建example03_key
工程,在main.cpp
輸入代碼。
/**
* @file main.cpp
* @author fishros@foxmail.com
* @brief 使用按鍵控制LED燈,按著開(kāi),松開(kāi)關(guān)
* @version 0.1
* @date 2022-12-19
*
* @copyright Copyright (c) 2022
*
*/
#include < Arduino.h >
void setup()
{
Serial.begin(115200);
pinMode(0, INPUT); // 設(shè)置2號(hào)引腳模式為OUTPUT模式
pinMode(2, OUTPUT); // 設(shè)置2號(hào)引腳模式為OUTPUT模式
}
void loop()
{
if (digitalRead(0) == LOW)
{
Serial.println("LED ON");
digitalWrite(2, LOW); // 低電平,打開(kāi)LED燈
}
else
{
Serial.println("LED OFF");
digitalWrite(2, HIGH); // 高電平,關(guān)閉LED燈
}
}
接著將代碼編譯燒錄到開(kāi)發(fā)板上,按下按鍵,查看LED燈。
三、使用按鍵控制LED(自鎖開(kāi)關(guān))
所謂自鎖,就是按下開(kāi),再按一下關(guān),看一下代碼實(shí)現(xiàn)
/**
* @file main.cpp
* @author fishros@foxmail.com
* @brief 使用按鍵控制LED燈,按著開(kāi),松開(kāi)關(guān),自鎖開(kāi)關(guān)
* @version 0.1
* @date 2022-12-19
*
* @copyright Copyright (c) 2022
*
*/
#include < Arduino.h >
bool status = false;
void setup()
{
Serial.begin(115200);
pinMode(0, INPUT); // 設(shè)置2號(hào)引腳模式為OUTPUT模式
pinMode(2, OUTPUT); // 設(shè)置2號(hào)引腳模式為OUTPUT模式
}
void loop()
{
// 自鎖開(kāi)關(guān)
if (digitalRead(0) == LOW)
{
delay(50); // 休眠50ms再次判斷,防止誤觸
if (digitalRead(0) == LOW)
{
status = !status;
while (digitalRead(0) == LOW) // 死循環(huán)等待放開(kāi)按鍵
;
}
}
if (status == true)
{
digitalWrite(2, LOW); // 低電平,打開(kāi)LED燈
}
else
{
digitalWrite(2, HIGH); // 低電平,打開(kāi)LED燈
}
/*
// 按著開(kāi),松開(kāi)關(guān)
if (digitalRead(0) == LOW)
{
Serial.println("LED ON");
digitalWrite(2, LOW); // 低電平,打開(kāi)LED燈
}
else
{
Serial.println("LED OFF");
digitalWrite(2, HIGH); // 高電平,關(guān)閉LED燈
}
*/
}
這里稍微復(fù)雜一些,當(dāng)按鍵按下時(shí)我們需要休眠50ms,防止誤觸,接著反置狀態(tài),等待按鍵松開(kāi)。
將代碼下載到開(kāi)發(fā)板,按下按鍵,測(cè)試一下。
四、總結(jié)
本節(jié)我們通過(guò)學(xué)習(xí)按鍵的使用,掌握了GPIO的輸入,下一節(jié)我們將嘗試進(jìn)階使用ADC,測(cè)量電池的電。
-
原理圖
+關(guān)注
關(guān)注
1299文章
6347瀏覽量
234636 -
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
108182 -
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57624 -
Boot
+關(guān)注
關(guān)注
0文章
150瀏覽量
35861 -
ROS
+關(guān)注
關(guān)注
1文章
279瀏覽量
17037
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論