你好,我是愛吃魚香ROS的小魚。上一節了解了MicroROS學習板的LED電路原理,最后得到結論是通過控制ESP_IO2的電平就可以控制電壓,接下來我們就嘗試利用Arduino的ESP_IO2對IO進行控制。
本教程所使用硬件平臺為MicroROS學習板V1.0.0,可點擊閱讀原文購買及查看詳情
一、GPIO控制介紹
1.1 什么是GPIO
首先我們了解下GPIO(General-purpose input/output),中文名通用型之輸入輸出的簡稱。
- 輸出模式,指GPIO是可以通過程序 控制其電壓高低 ,普通的GPIO只能輸出(低電平0V)和高電平(3.3V,有的單片機是5V)。
- 輸入模式,指GPIO可以 讀取其上的電壓 ,普通的GPIO只能讀取低電平和高電平兩種。比如當我們想測試一個按鍵是否被按下,就可以GPIO的輸入功能。
1.2 GPIO控制API
Arduino提供了簡單易用的API來控制IO的輸入和輸出。
1.2.1 引腳模式設置-pinMode
該函數用于定義特定引腳的 GPIO 操作模式。
void pinMode(uint8_t pin, uint8_t mode);
pin
定義 GPIO 引腳編號。mode
設置操作模式。
基本輸入和輸出支持以下模式:
- INPUT將 GPIO 設置為不帶上拉或下拉(高阻抗)的輸入。
- OUTPUT將 GPIO 設置為輸出/讀取模式。
- INPUT_PULLDOWN 將 GPIO 設置為具有內部下拉列表的輸入。
- INPUT_PULLUP 將 GPIO 設置為帶有內部上拉的輸入。
1.2.2 數字輸出-digitalWrite
digitalWrite
用于設置被配置為OUTPUT
模式的引腳電平為HIGH
或 LOW
。
void digitalWrite(uint8_t pin, uint8_t val);
pin
所設置的GPIO編號。val
將輸出數字狀態設置為HIGH
或LOW
。
1.2.3 數字輸入-digitalRead
digitalRead
用于讀取配置為INPUT
模式的給定引腳的狀態。
int digitalRead(uint8_t pin);
pin
所設置的GPIO編號。
此函數將返回所選引腳的邏輯狀態為 HIGH
或LOW。
有了上面三個函數,我們就可以編寫代碼了。
二、編寫LED閃爍代碼
新建example02_led
工程,接著輸入下面的代碼。
/**
* @file main.cpp
* @author fishros@foxmail.com
* @brief 使LED燈亮1s關閉1s,持續閃爍
* @version 0.1
* @date 2022-12-19
*
* @copyright Copyright (c) 2022
*
*/
#include < Arduino.h >
void setup()
{
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 設置2號引腳模式為OUTPUT模式
}
void loop()
{
// put your main code here, to run repeatedly:
digitalWrite(2, LOW); // 低電平,打開LED燈
delay(1000); // 休眠1000ms
digitalWrite(2, HIGH); // 高電平,關閉LED燈
delay(1000); // 休眠1000ms
}
這里我們讓LED亮1s關閉1s,持續閃爍,代碼很簡單,不再講解。
編譯下載代碼到開發板,接著觀察現象,你會發現藍色LED燈在不斷閃爍。
三、通過串口控制LED
我們繼續更新下工程代碼,實現通過串口指令來控制LED的亮滅。
#include < Arduino.h >
void setup()
{
Serial.begin(115200);
pinMode(2, OUTPUT); // 設置2號引腳模式為OUTPUT模式
}
void loop()
{
// LED串口控制代碼
if (Serial.available())
{
String command = Serial.readString();
if (command == "on")
{
digitalWrite(2, LOW); // 低電平,打開LED燈
}
else if (command == "off")
{
digitalWrite(2, HIGH); // 高電平,關閉LED燈
}
}
/* // LED閃爍代碼
digitalWrite(2, LOW); // 低電平,打開LED燈
delay(1000); // 休眠1000ms
digitalWrite(2, HIGH); // 高電平,關閉LED燈
delay(1000); // 休眠1000ms
*/
}
通過串口讀取指令,收到on則打開LED,收到off關閉LED。
將代碼下載到開發板,接著打開串口監視器,輸入指令進行測試。
四、總結
至此,我們成功完成了點燈,掌握了基本的GPIO輸出控制,下一節我們嘗試使用按鍵輸入來控制LED燈。
-
led
+關注
關注
242文章
23843瀏覽量
674041 -
輸入輸出
+關注
關注
0文章
42瀏覽量
10897 -
GPIO
+關注
關注
16文章
1280瀏覽量
54088 -
Arduino
+關注
關注
190文章
6498瀏覽量
192147
發布評論請先 登錄
介紹DSP28335的GPIO的輸出高低電平功能

GPIO輸出--蜂鳴器
使用 RPi.GPIO 模塊的輸出(Output)功能
二.GPIO輸入輸出及延遲函數

04、STM8通用輸入輸出口(GPIO)

STM32的8種GPIO輸入輸出模式

GPIO通用輸入輸出

通用輸入輸出GPIO是什么

評論