【ESP32】Arduino开发 | GPIO通用输入输出+LED点灯和按键输入例程

关于ESP32上的GPIO外设详细介绍会放在本栏目的ESP-IDF开发文章中,跳转栏目目录可以找到对应的文章。

1. API

1.1 管脚配置

void pinMode(uint8_t pin, uint8_t mode);
  • pin:管脚号;
  • mode:GPIO模式,配置选项如下。
配置项功能
INPUT输入模式
OUTPUT输入模式
INPUT_PULLDOWN下拉输入模式
INPUT_PULLUP上拉输入模式

 1.2 管脚输出

void digitalWrite(uint8_t pin, uint8_t val);
  • pin:管脚号;
  • val:输出状态;HIGH:高电平;LOW:低电平。

1.3 管脚输入

int digitalRead(uint8_t pin);
  •  pin:管脚号。

        返回管脚的输入电平。

2. 例程

2.1 LED点灯

        这个例程实现LED的点灯,主循环中每秒改变一次LED的状态。

#include <Arduino.h>

void setup()
{
    pinMode(2, OUTPUT);
}

void loop()
{
    digitalWrite(2, HIGH);
    delay(1000);
    digitalWrite(2, LOW);
    delay(1000);
}

         Arduino里面,初始化操作放在setup函数中,loop函数就是主任务循环。我开发板上的LED是连在IO2上的。在setup函数中初始化管脚为输出模式;loop函数中每一秒改变一次管脚输出;延时调用delay函数即可,单位是毫秒。

        下载程序后,开发板上的LED灯就会开始闪烁了。

2.2 按键输入

        这个例程实现按键的输入检测,检测到按键输入就往串口打印一条信息。

#include <Arduino.h>

void setup()
{
    pinMode(0, INPUT_PULLUP);
    Serial.begin(115200);
}

void loop()
{
    if (LOW == digitalRead(0)) {

        /* 软件去抖 */
        while (LOW == digitalRead(0)) {
            delay(20);
        }
        
        Serial.println("Key pressed");
    }
}

        我这里使用的按键是连接到IO0管脚上的,带外部上拉,所以这里管脚配置成输入上拉模式;顺便初始化串口,用于打印log。

        主循环就是不断读取管脚的信号,检测到按键按下后会经过一个软件去抖操作,防止程序误检测,最后就是打印信息。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马浩同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值