1.例程分析 阅读 Bink 例程
1.1 新建打开Bink例程 如下图
1.2 例程代码分析
例程代码如下
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
这里有一个疑问:这个LED_BUILTIN
是在哪里定义的呢?答案就在Pins_Arduino
这个文件中。
通过右键跳转可以跳到Pins_Arduino这个文件中
这是Arduino环境下esp32开发板的引脚定义文件,用于指定特定硬件板上的引脚映射和配置。此文件定义了一系列常量,这些常量代表连接到Arduino板或其他兼容板的物理引脚。
- 预处理:
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
这使用了预处理器指令来避免头文件的重复包含,这是一个常见的编程技巧,确保头文件的内容只被包含一次。
- 内置LED和串行通信引脚:
static const uint8_t LED_BUILTIN = 15;
#define BUILTIN_LED LED_BUILTIN
#define LED_BUILTIN LED_BUILTIN
static const uint8_t TX = 16;
static const uint8_t RX = 17;
这里定义了Arduino板上的内置LED的引脚号,Arduino UNO R3通常是数字13,FireBeetle 2 ESP32 C6在这里是15,以及串行通信的TX(发送)和RX(接收)引脚。
- IIC引脚:
static const uint8_t SDA = 19;
static const uint8_t SCL = 20;
- SPI引脚:
static const uint8_t SS = 5;
static const uint8_t MOSI = 22;
static const uint8_t MISO = 21;
static const uint8_t SCK = 23;
SPI(Serial Peripheral Interface)是一种同步串行数据协议,用于微控制器与其他设备之间的通信。这里定义了SPI通信所需的引脚。
- 模拟和数字引脚:
static const uint8_t A1 = 2;
// ... (其他模拟引脚)
static const uint8_t D2 = 8;
// ... (其他数字引脚)
这些常量定义了Arduino板上用于模拟输入和数字I/O的引脚号。
- 特定功能定义:
#ifdef GDI_DISPLAY_FPC_INTERFACE
// ... (一系列与GDI显示相关的引脚定义)
#endif
这部分代码检查是否定义了GDI_DISPLAY_FPC_INTERFACE宏。如果定义了,则它将定义FPC(Flexible Printed Circuit,柔性印刷电路)接口相关的引脚。
总的来说,这个头文件为特定兼容板提供了引脚映射,使得在编写代码时可以使用这些有意义的常量名称,而不是直接使用引脚号,从而提高了代码的可读性和可维护性。
2 FireBeetle 2 ESP32 C6的双闪灯
2.1实验目的
控制2个LED交替闪烁,实验数字IO,和延时函数的应用
2.2LED原理图
2.3实验代码
#define LED_BLUE SCK
#define LED_RED MOSI
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_RED, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BLUE, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(LED_BLUE, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(LED_RED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(LED_RED, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
}
2.4实验现象
WeChat_20240427193903