ESP32(Arduino)

本篇内容在熟知51单片机与C语言基础上编写

一,开发板介绍和引脚图

USB接口用于下载程序,电源输入和烧录驱动等等。BOOT启动模式选择,按下为下载模式,放开为运行模式。ESP-32-WROOM-32模组集成了蓝牙,wifi等模块

共48个引脚。但并不是所有引脚都暴露在外面,有些引脚不能使用就没有暴露出来。这个单片机就只有30个引脚。ESP32芯片有34个可编程的GPIO引脚,每个引脚执行多个功能

 二,开发方式

三,编程基础

在Arduino IDE中变量的声明必须放在文件开始。Arduino支持的变量类型有int float char bool string等 

Arduino中的void setup()函数是在开发板通电或者复位后执行的初始化程序(比如配置IO口状态,初始化串口等等),只会执行一次。void loop(){}函数是一个死循环,里面的程序会不断执行

Arduino常见函数介绍:

四,Arduino控制ESP32GPIO口输入输出

ESP32上D开头的引脚就是GPIO引脚,只是输入和输出两种模式

1,输出模式

以下为LED闪烁实验代码

int led_pin = 12;

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

void loop()
{
    digitalWrite(led_pin, HIGH);
    delay(1000); //1s
    digitalWrite(led_pin, LOW);
    delay(1000);
}

点亮流水灯

int pin_list[5] = {13, 12, 14, 27, 26};
int len = sizeof(pin_list) / sizeof(pin_list[0]); //数组长度

void setup()
{
    for(int i=0;i<num;i++)
    {
        pinMode(pin_list[i], OUTPUT);
    }
}

void loop()
{
    for(int i=0;i<num;i++)
    {
        digitalWrite(pin_list[i], HIGH);
        delay(50);
    }

    for(int i=0;i<num;i++)
    {
        digitalWrite(pin_list[i], LOW);
        delay(50);
    }   
}

2,输入模式

设置引脚的输入模式pinMode(1, INPUT)

设置为上拉输入模式pinMode(1, INPUT_PULLUP)

设置为下拉输入模式pinMode(1, INPUT_PULLDOWN)

五,数码管

数码管按照显示位数分为1位,2位,3位,4位,5位,6位,7位等数码管。其基本单元仍然是LED

按发光二极管的连接方式可分为共阳极数码管和共阴极数码管。在数码管引脚图中,COM就是公共端,共阴数码管这个COM端接地,共阳数码管接电源正极,剩下的abcdefg被称为段选线,分别对应不同位置的LED。

1,一位数码管 

接线

int pin_a = 4;
int pin_b = 5;
int pin_c = 19;
int pin_d = 21;
int pin_e = 22;
int pin_f = 2;
int pin_g = 15;
int pin_dp = 18;

//定义存放所有输出引脚的数组
int pin_array[8] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp}

//定义数字显示逻辑的二维数组
int number_array[][8] = 
{//a,b,c,d,e,f,g,dp
{0, 0, 0, 0, 0, 0, 1, 1},//0
{1, 0, 0, 1, 1, 1, 1, 1},//1
{0, 0, 1, 0, 0, 1, 0, 1}//2
//以及3 4 5 6 7 8 9几个数字,这里就不一一列举了
};

//定义显示数字的函数
void display_number(int num)
{
    for(int i=0;i<8;i++)
    {
        digitalWrite(pin_array[i], number_array[num][i]);
    }
}

void setup()
{
    for(int i=0;i<8;i++)
    {
        pinMode(pin_array[i], OUTPUT);
        digitalWrite(pin_array[i], LOW);//初始化所有引脚为高电平,即默认不亮
    }
}

void loop()
{
    display_number(2);//显示数字2
}

 2,四位数码管

(1)原理

1位数码管有两个相同的公共(COM)端,而4位数码管没有公共端,但是有四个控制不同位置显示的选通端。如下图,SEG1 SEG2 SEG3 SEG4就是四个独立的选通端(也可以看作公共端),SEG1就是控制第一个数码管亮灭,SEG2控制第二个。选通端是相互独立的,而负责显示数字的段选线是接到一起的。   一位数码管10个引脚,四位数码管12个引脚

下图所示的D0 D1 D2 D3就是选通端(位选线),也就是四位数码管的公共端,相互独立。上面的八根段选线全都是接到一起的。独立的公共端决定哪一个数码管点亮,连在一起的段选线控制点亮的数码管亮什么数字 

 

接线图

 

(2)静态显示 

// 定义位选线引脚
int seg_1 = 5;
int seg_2 = 18;
int seg_3 = 19;
int seg_4 = 21;

// 定义位选线数组;
int seg_array[4] = {seg_1, seg_2, seg_3, seg_4};

// 定义段选线引脚
int a = 32;
int b = 25;
int c = 27;
int d = 12;
int e = 13;
int f = 33;
int g = 26;
int dp = 14;

// 定义段选线数组
int led_array[8] = {a, b, c, d, e, f, g, dp};

// 定义共阴极数码管不同数字对应逻辑电平的二维数组
int logic_array[10][8] = {
 //a, b, c, d, e, f, g, dp
  {1, 1, 1, 1, 1, 1, 0, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1, 0}, // 2
  {1, 1, 1, 1, 0, 0, 1, 0}, // 3
  {0, 1, 1, 0, 0, 1, 1, 0}, // 4
  {1, 0, 1, 1, 0, 1, 1, 0}, // 5
  {1, 0, 1, 1, 1, 1, 1, 0}, // 6
  {1, 1, 1, 0, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1, 0}, // 8
  {1, 1, 1, 1, 0, 1, 1, 0}, // 9
  };


void setup() {
  // 设置所有的位选线引脚为输出模式,初始化所有的位选线引脚为高电平
  for (int i=0;i<4;i++) {
    pinMode(seg_array[i], OUTPUT);
    digitalWrite(seg_array[i], HIGH);
    }
  // 设置所有的段选线引脚为输出模式,初始化所有的段选线引脚为低电平
  for (int i=0;i<8;i++){
    pinMode(led_array[i], OUTPUT);
    digitalWrite(led_array[i], LOW);
    }
}

void loop() {
//  display_number(2, 4);
//  delay(1000);

  // 按顺序让所有位置显示0-9
  for (int i=0;i<4;i++) {
    for (int j=0;j<10;j++) {
      display_number(i, j);
      delay(200);
      }
    }
}


void display_number(int order, int number) {

  // 清屏
  clear();
  
  // 设置对应的位选线引脚为低电平
  digitalWrite(seg_array[order], LOW);

  // 给对应的段选线引脚设置对应的电平
  for (int i=0;i<8;i++) {
    digitalWrite(led_array[i], logic_array[number][i]);
  }
  }


void clear(){
  // 设置所有的位选线引脚为输出模式,初始化所有的位选线引脚为高电平
  for (int i=0;i<4;i++) {
    pinMode(seg_array[i], OUTPUT);
    digitalWrite(seg_array[i], HIGH);
    }
  // 设置所有的段选线引脚为输出模式,初始化所有的段选线引脚为低电平
  for (int i=0;i<8;i++){
    pinMode(led_array[i], OUTPUT);
    digitalWrite(led_array[i], LOW);
    }
}

(3)动态显示

 动态扫描是对位选线进行扫描,通过刷新位选线来实现显示多个数字的效果

// 定义位选线引脚
int seg_1 = 5;
int seg_2 = 18;
int seg_3 = 19;
int seg_4 = 21;

// 定义位选线数组;
int seg_array[4] = {seg_1, seg_2, seg_3, seg_4};

// 定义段选线引脚
int a = 32;
int b = 25;
int c = 27;
int d = 12;
int e = 13;
int f = 33;
int g = 26;
int dp = 14;

// 定义段选线数组
int led_array[8] = {a, b, c, d, e, f, g, dp};

// 定义共阴极数码管不同数字对应逻辑电平的二维数组
int logic_array[10][8] = {
 //a, b, c, d, e, f, g, dp
  {1, 1, 1, 1, 1, 1, 0, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1, 0}, // 2
  {1, 1, 1, 1, 0, 0, 1, 0}, // 3
  {0, 1, 1, 0, 0, 1, 1, 0}, // 4
  {1, 0, 1, 1, 0, 1, 1, 0}, // 5
  {1, 0, 1, 1, 1, 1, 1, 0}, // 6
  {1, 1, 1, 0, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 
### ESP32Arduino环境下的开发与配置方法 ESP32Arduino平台上的开发需要完成一系列的环境配置,以便能够使用熟悉的Arduino函数和库进行代码编写并直接运行于ESP32芯片上。以下是关于如何搭建ESP32 Arduino开发环境的详细指南。 #### 1. 安装Arduino IDE 确保已安装最新版本的Arduino IDE。可以从官方站点下载并安装最新版的Arduino IDE[^1]。建议使用稳定版本以避免潜在的兼容性问题。 #### 2. 添加ESP32开发板支持 在Arduino IDE中添加ESP32开发板的支持包。具体操作如下: - 打开Arduino IDE,进入 `File > Preferences`。 - 在“Additional Boards Manager URLs”字段中添加以下链接,并按回车确认: ``` https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json ``` - 接着,在 `Tools > Board > Boards Manager` 中搜索“esp32”,选择安装最新的ESP32开发板支持包(如2023年11月发布的 esp32-2.0.14 版本)[^2]。 #### 3. 配置开发环境 完成上述步骤后,需对开发环境进行进一步配置: - 选择正确的开发板型号:在 `Tools > Board` 中选择对应的ESP32开发板型号,例如“ESP32 Dev Module”。 - 设置端口:在 `Tools > Port` 中选择连接到计算机的串口号。 - 确保波特率设置为默认值(通常是115200)。 #### 4. 测试示例代码 为了验证环境是否正确配置,可以尝试上传一个简单的测试代码。例如,以下代码用于点亮开发板上的内置LED灯: ```cpp void setup() { pinMode(2, OUTPUT); // 设置GPIO2为输出模式 } void loop() { digitalWrite(2, HIGH); // 点亮LED delay(1000); // 延时1秒 digitalWrite(2, LOW); // 熄灭LED delay(1000); // 延时1秒 } ``` 将上述代码复制到Arduino IDE中,并点击“Upload”按钮上传至ESP32开发板。如果一切正常,开发板上的LED灯应按照设定的频率闪烁[^3]。 #### 5. 离线安装方法 对于没有稳定网络连接或希望离线安装的用户,可参考ESP32 Arduino开发环境离线安装教程。具体资源地址为:[https://gitcode.com/Resource-Bundle-Collection/3dd5e](https://gitcode.com/Resource-Bundle-Collection/3dd5e)。此方法允许开发者下载所需的库文件并手动安装到本地环境中。 --- ### 注意事项 - 确保安装的ESP32库版本与Arduino IDE版本兼容。 - 如果遇到上传失败的问题,请检查串口驱动是否正确安装以及开发板型号是否匹配。 - 使用最新版本的开发工具和库文件有助于减少潜在的错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值