玩转 ESP32 + Arduino (三) GPIO和串口

本文介绍了如何使用ESP32的GPIO进行数字输入输出、模拟输入输出,包括初始化GPIO、模拟读写、LEDC PWM控制等。此外,还详细讲解了ESP32的串口通信,包括初始化、数据发送与接收、串口超时设置等,为读者提供了丰富的示例代码。
摘要由CSDN通过智能技术生成

我用的 ESP32 DEVKIT V1引脚图


一、GPIO

1、初始化GPIO

pinMode(pin, mode)

作用:设置一个引脚(pin)作为GPIO时的I/O模式。

参数:

pin:引脚编号

mode:GPIO的I/O模式,取值有3种

INPUT :作为数字输入

OUTPUT :作为数字输出

INPUT_PULLUP:作为数字输入,且使能引脚的内部上拉电阻

注意:

a、引脚作为PWM输出时,无需先前使用pinMode配置其模式,因为PWM本身就代表了输出的意思。且官方库源代码中可以发现,它已经帮我们配置为输出了。

b、模拟引脚也可以作为数字引脚使用,完全OK。这在数字引脚不够用的情况下非常有用。

2、GPIO数字输出

digitalWrite(pin,value)

作用:设置一个数字输出引脚的输出电平值,HIGH或者LOW。

参数:

pin:引脚编号。此引脚必须在之前使用pinMode设置为OUTPUT模式。

value:2个值

LOW:输出低电平

HIGH:输出高电平

3、GPIO数字输入

int digitalRead(pin)

作用:读取一个数字输入引脚的电平值。

返回:HIGH(高电平)或者LOW(低电平)。

参数:

pin:引脚编号。

示例 : 按键控制灯亮灭
void setup()
{
  pinMode(2,OUTPUT);
  pinMode(0,INPUT_PULLUP);
}

void loop()
{
  if(digitalRead(0))
  {
    while(digitalRead(0));
    digitalWrite(2,!digitalRead(2));
  }
}
4、GPIO模拟输入:analogRead(pin)

注意 : 模拟输入是通过PWM实现的, 所以不需要初始化PIN

analogRead(4)
5. 模拟信号输入分辨率: analogSetWidth(bit);
bit的值 范围
9 0~511
10 0~1023
11 0~2047
12(默认) 0~4095
6. 模拟信号输出 (基于LEDC)

LEDC是基于PWM调制实现模拟输出的.
与arduino uno主板不同, ESP32的PWM模拟是一个个通道 共16个, 通道可以映射到引脚上. 引脚就可以输出PWM信号了.

6.1 设置通道 ledcSetup(channel,freq,bit_num)

参数:

  • channel : LEDC的PWM通道参数,可选0~15
  • freq : 10Hz到40MHz , 但较高的频率精确度低
  • bit_num: 占空比分辨率(可选1~16), 比如bit_num=8 则范围 0~2的8次方 , 也就是0~255

推荐的配置:

频率 位深 过渡的可用步骤
1220赫兹 16 65536
2441赫兹 15 32768
4882赫兹 14 16384
9765Hz 13 8192
19531赫兹 12 4096
ledcSetup(1,1200,16);
6.2 通道与引脚映射 ledcAttachPin(pin,channel)
ledcAttachPin(5,1);

注意: 一个通道可以同时映射多个引脚

6.3 取消引脚的PWM映射 ledcDetachPin(pin)
ledcDetachPin(5);
6.4 向指定通道写入占空比 ledcWrite(channel,duty)

例: 呼吸灯

bool add_status = true;
void setup()
{
  pinMode(2,OUTPUT);
  ledcSetup(2,1200,8);
  ledcAttachPin(2,2);
}

void loop()
{
   for(int i = 0 ; i<256; i++)
   {
    if(add_status)
    {
      ledcWrite(2,i);
    }
    else
    {
      ledcWrite(2,256-i);
    }
    delay(5);
  }
  add_status = !add_status;
}
例子, 全彩呼吸灯
#include <Arduino.h>

#define LED_R 27
#define LED_G 33
#define LED_B 32

void setup()
{
  Serial.begin(115200);
  ledcSetup(1, 1200, 8);
  ledcSetup(2, 1200, 8);
  ledcSetup(3, 1200, 8);

  ledcAttachPin(LED_R, 1);
  ledcAttachPin(LED_G, 2);
  ledcAttachPin(LED_B, 3);

  ledcWrite(1, 255);
  ledcWrite(2, 255);
  ledcWrite(3, 255);
}

void loop()
{
  f
ESP32是一款32位的微控制器,而ESP-IDF是官方提供的用于开发ESP32的软件开发框架。Clion是一款集成开发环境(IDE),可以用于开发和调试ESP32项目。 在使用Clion进行ESP32开发之前,需要先搭建好ESP-IDF和Clion的开发环境。以下是搭建ESP32+Clion开发环境的步骤: 1. 安装ESP-IDF:根据官方文档的指引,下载并安装ESP-IDF。确保安装的是与你的ESP32兼容的版本。 2. 安装Clion:下载并安装Clion,确保安装的是最新版本。 3. 配置ESP-IDF路径:打开Clion,进入File -> Settings -> Build, Execution, Deployment -> CMake,将ESP-IDF的路径添加到"CMake Options"中。例如,如果ESP-IDF安装在`/path/to/esp-idf`,则添加以下内容: ``` -DCMAKE_TOOLCHAIN_FILE=/path/to/esp-idf/tools/cmake/toolchain-esp32.cmake ``` 4. 创建ESP32项目:在Clion中创建一个新的CMake项目,并将ESP-IDF的示例项目导入到Clion中。可以通过以下命令将示例项目复制到你的项目目录中: ``` cp -r /path/to/esp-idf/examples/get-started/hello_world /path/to/your/project ``` 5. 配置CMakeLists.txt:打开项目中的CMakeLists.txt文件,并根据你的项目需求进行配置。确保设置了正确的目标硬件和端口。 6. 构建和烧录:在Clion中点击Build按钮,Clion将自动构建项目并生成可执行文件。然后,使用ESP-IDF提供的烧录工具将可执行文件烧录到ESP32上。 7. 调试:在Clion中配置调试器,可以使用GDB进行调试。在调试过程中,可以设置断点、查看变量的值等。 请注意,以上步骤仅为搭建ESP32+Clion开发环境的基本步骤,具体的配置和操作可能会因个人需求和环境而有所不同。建议参考ESP-IDF和Clion的官方文档以获取更详细的指导。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值