简介
该Wiki为FireBeetle 2 ESP32-C6及Beetle ESP32-C6的基础教程
如需了解FireBeetle 2 ESP32-C6简介及硬件详情,点击此处
如需了解Beetle ESP32-C6简介及硬件详情,点击此处
如需了解FireBeetle 2 ESP32-C6及Beetle ESP32-C6的进阶教程,点击此处
如需了解Arduino基础,点击此处
电池电压测量
电压计算代码
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
//set the resolution to 12 bits (0-4096)
analogReadResolution(12);
}
void loop() {
// read the analog / millivolts value for pin 0:
int analogValue = analogRead(0);
int analogVolts = analogReadMilliVolts(0);
// print out the values you read:
Serial.print("ADC analog value = ");
Serial.println(analogValue);
Serial.print("ADC millivolts value = ");
Serial.print(analogVolts);
Serial.println("mV");
// Please adjust the calculation coefficient according to the actual measurement.
Serial.print("BAT millivolts value = ");
Serial.print(analogVolts * 2);
Serial.println("mV");
Serial.println("--------------");
delay(500);
}
PWM输出
ESP32的PWM功能需要提前定义声明
-
ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);
说明:设置PWM引脚参数
参数:- pin: 产生PWM信号的引脚
- freq: PWM频率
- resolution: PWM分辨率(范围1-14位)
-
ledcWrite(uint8_t pin, uint32_t duty);
说明:输出PWM信号
参数:- pin: 选择引脚
- duty: 设置占空比
-
ledcWrite(uint8_t pin, uint32_t duty);
说明:输出PWM信号
参数:- pin: 选择引脚
- duty: 设置占空比
示例
ESP32的PWM由于其可以自由映射到其它端口进行输出,您需要进行几步设置,该案例将使用帮助您理解其中的步骤
该案例你可以看到LED灯逐渐变亮变暗
/*
* LED呼吸灯示例
*/
const int ledPin = 15; // PWM生成后实际输出引脚
//设置PWM参数
const int freq = 5000;//PWM频率
const int ledChannel = 0;//信号生成GPIO
const int resolution = 8;//8位分辨率
void setup(){
//PWM引脚参数设置
ledcAttach(ledPin,1000,8);
}
void loop(){
//逐渐变亮
for(int dutyCycle = 0; dutyCycle <= 100; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledPin, dutyCycle);
delay(15);
}
//逐渐变暗
for(int dutyCycle = 100; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledPin, dutyCycle);
delay(15);
}
}
/*
* LED呼吸灯示例
*/
const int ledPin = 15; // PWM生成后实际输出引脚
void setup(){
}
void loop(){
//逐渐变亮
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
analogWrite(ledPin, dutyCycle);
delay(15);
}
// //逐渐变暗
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
analogWrite(ledPin, dutyCycle);
delay(15);
}
}
中断
ESP32中断可自由分配
- pinMode(GPIO,INPUT_PULLUP);
说明:外部中断引脚定义
参数:- GPIO:ESP32想要作为中断的引脚号。
- INPUT_PULLINGUP:设置为上拉模式。
- attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
说明:外部中断
参数:- pin:Arduino引脚号。
- ISR:发生中断时要调用的ISR;此函数必须不带任何参数,并且不返回任何内容。有时将此功能称为中断服务程序。
- mode:定义何时触发中断。预定义了三个常数作为有效值:
- CHANGE 当引脚电平发生变化时触发中断引脚
- RISING 当引脚电平由低电平变为高电平时触发中断引脚
- FALLING 当引脚电平由高电平变为低电平时触发中断引脚
- detachInterrupt(digitalPinToInterrupt(pin))
说明:关闭给定的中断。
参数:- pin:需要禁用的中断引脚
- interrupts()
说明:重新启用中断(在被noInterrupts()禁用之后。中断允许某些重要任务在后台发生并默认启用。当禁用中断时,某些功能将不起作用,并且传入通信可能会被忽略。可能会稍微破坏代码的时序,但是对于特别关键的代码部分可能会被禁用。 - noInterrupts()
说明:禁用中断(您可以使用来重新启用它们interrupts())。中断允许某些重要任务在后台发生,并且默认情况下启用。禁用中断时,某些功能将不起作用,并且传入的通信可能会被忽略。但是,中断可能会稍微破坏代码的时序,并且可能会在代码的特别关键的部分将其禁用。
串口
ESP32串口初始化需要映射,可使用的串口有Serial、Serial1
- Serial1.begin(baud, config, rxPin, txPin);
说明:Serial1初始化
参数:- baud:波特率。
- config:数据位和停止位设置。
- rxPin:RX引脚
- txPin:TX引脚
Serial1.begin(9600,SERIAL_8N1,/*rx =*/0,/*Tx =*/1);
舵机
ESP32不能通过Servo库驱动舵机,需要在项目->加载库->管理库中搜索安装ESP32Servo库驱动舵机
SD库
SD类
-
begin(cspin)
说明:初始化SD卡库和 SD卡。当使用SD.begin()时﹐默认将Arduino SPI的SS引脚连接到SD卡的CS使能选择端;也可以使用begin(cspin)指定一个引脚连接到SD卡的CS使能选择端,但仍需保证 SPI 的SS引脚为输出模式,否则SD卡库将无法运行。
参数:- cspin:连接到SD 卡CS端的Arduino引脚。
返回值: boolean型值,为 true表示初始化成功;为 false表示初始化失败。
-
exists()
说明:检查文件或文件夹是否存在于SD卡中。语法:SD. exists(filename)
参数:- filename:需要检测的文件名。其中可以包含路径,路径用“/”分隔。
返回值: boolean型值,为 true表示文件或文件夹存在;为false表示文件或文件夹不存在。
-
open()
说明:打开SD卡上的一个文件。如果文件不存在,且以写入方式打开,则Arduino会创建一个指定文件名的文件。(所在路径必须事先存在)
语法:SD.open(filename,mode)
参数:- filename:需要打开的文件名。其中可以包含路径,路径用“/”分隔。
- mode(可选):打开文件的方式,默认使用只读方式打开。也可以使用以下两种方式打开文件:
FILE_READ:只读方式打开文件; FILE_WRITE,写入方式打开文件。
返回值:返回被打开文件对应的对象﹔如果文件不能打开,则返回false。
-
remove()
说明:从SD卡移除一个文件。如果文件不存在,则函数返回值是不确定的,因此在移除文件之前,最好使用SD. exists(filename)先检测文件是否存在。
语法:SD.remove(filename)
参数:- filename,需要移除的文件名。其中可以包含路径,路径用“!”分隔。
返回值: boolean型值,为true表示文件移除成功;为false表示文件移除失败。
-
mkdir(filename)
说明:创建文件夹。
参数:- filename,需要创建的文件夹名。其中可以包含路径,路径用“/”分隔。
返回值: boolean型值,为 true表示创建成功;为false表示创建失败。
-
rmdir(filename)
说明:移除文件夹。被移除的文件夹必须是空的。语法:SD.rmdir( filename)
参数:- filename,需要移除的文件夹名。其中可以包含路径,路径用“/”分隔。
返回值 : boolean型值,为 true表示移除成功;为false表示移除失败。
File类
File类提供了读/写文件的功能,该类的功能与之前使用的串口相关函数的功能非常类似。其成员函数如下。
-
available()
说明:检查当前文件中可读数据的字节数。语法:file. available()
参数:- file:一个 File类型的对象。返回值:可用字节数。
-
close()
说明:关闭文件,并确保数据已经被完全写入SD卡中。语法:file. close()
参数:- file:一个 File类型的对象。返回值:无。
-
flush()
说明:确保数据已经写入SD卡。当文件被关闭时,flush()会自动运行。语法: file.flush
参数:- file:一个File类型的对象。返回值:无。
-
peek()
说明:读取当前所在字节,但并不移动到下一个字节。
参数- file:一个 File类型的对象。
返回值:下一个字节或者下一个字符。如果没有可读数据,则返回一1。
-
position( )
说明:获取当前在文件中的位置(即下一个被读/写的字节的位置)。语法:file. position()
参数:- file:一个 File类型的对象。返回值:在当前文件中的位置。
-
print()
说明:输出数据到文件。要写入的文件应该已经被打开,且等待写入。语法:file. print(data)file. print(data,BASE)
参数:- file:一个 File类型的对象。
- data,要写入的数据(可以是类型char, byte ,int .long 或 String)。
- BASE(可选),指定数据的输出形式:BIN(二进制);oCT(八进制);DEC(十进制);HEX(十六进制)。
返回值;发送的字节数。
-
println()
说明:输出数据到文件,并回车换行。语法:file. println(data)file,println(data,BASE)
参数:- file:一个 File类型的对象。
- data:要写入的数据(类型可以是char , byte , int , long或String)。
- BASE(可选),指定数据的输出形式:BIN(二进制>;OCT(八进制);DECK十进制;HEX(十六进制)返回值;发送的宇节数。
-
seek()
说明;跳转到指定位置。该位置必须在·到该文件大小之间。语法:file. seek( pos)
参数:- file:一个 File类型的对象。pos,需要查找的位置。
返回值: boolean型值,为 true表示跳转成功;为false表示跳转失败。
-
size()
说明:获取文件的大小。语法:filue. size()
参数:- file:一个File类型的对象。
返回值:以字节为单位的文件大小。
-
read()
说明:读取1B数据。语法:file.read参数:- file:一个 File类型的对象。
返回值:下一个字节或者字符;如果没有可读数据,则返回一1。
-
write()
说明;写入数据到文件。语法:file. write(data)file. write(buf,len)
参数:- file:一个File类型的对象。
- data:要写入的数据,类型可以是 byte ,char或字符串(char * ) 。buf,一个字符数组或者宁节数据。
- len:buf数组的元素个数。
返回值:发送的字节数。
-
isDirectory()
说明:判断当前文件是否为目录。语法:file.isDirectory()
参数:- file:一个File类型的对象。
返回值: boolcan型值;为 true表示是目录;为 false表示不是目录。
-
openNextFile()
说明:打开下一个文件。语法:file.openNextFile()
参数: -
file:一个 File类型的对象。
返回值:下一个文件对应的对象。
- rewindDirectory()
说明:回到当前目录中的第一个文件。语法:file.rewindDirectory()
参数:
file,一个File类型的对象。返回值:无。
示例
示例请看File > Examples > SD > SD_Test
常见问题
烧录报错
原因
-
如果Loop中延时过短或者不加延时会导致烧录超时
-
错误的调用一些函数会导致计算机不能识别USB
解决办法
- 按住BOOT,点击RST,然后松开BOOT按键,即可烧录。
串口无打印
解决办法
- 检查USB CDC是否处于Enable状态
- 使用其他的串口调试助手查看打印信息
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
更多
FireBeetle 2 ESP32-C6简介
Beetle ESP32-C6简介
FireBeetle 2 ESP32-C6及Beetle ESP32-C6进阶教程
- [DFRobot商城购买链接] FireBeetle 2 ESP32-C6;Beetle ESP32-C6