1. pinMode函数
void pinMode(uint8_t pin, uint8_t mode);该函数的作用是设置某个引脚的工作模式,各个参数的作用如下:
pin:需要设置的引脚编号,比如对于ESP32开发板,pin值可以取GPIO后面的编号,例如,11,12,13
mode:需要设置引脚为哪一种工作模式,工作模式取值可为:
INPUT:输入模式,表示从外围设备向ESP32输入信号,比如从某个传感器的信号引脚读取传感器数据;
OUTPUT:输出模式,表示从发ESP32开发板向外围设备输出信号,比如通过ESP32引脚的高低电平控制LED灯的亮灭;
INPUT_PULLUP:输入上拉模式,和INPUT的不同之处在于,INPUT模式在引脚未连接外围设备的时候,引脚处于浮空状态,电平信号不确定,可能是高电平,也可能是低电平,但是INPUT_PULLUP模式,在引脚浮空状态下,会启用GPIO内部的上拉电阻,将引脚默认设置为高电平;
INPUT_PULLDOWN:输入下拉模式,和
INPUT_PULLUP类似,只不过浮空状态会启用GPIO内部下拉电阻,将引脚默认设置为低电平。
特别提示:
当引脚设置为
OUTPUT模式后,依然可以读取该引脚上的电平信号,但是当引脚设置为INPUT模式后,一定不能向该引脚输出高/低电平
并不是所有引脚都支持上述四种工作模式,比如
ESP32上的GPIO34、GPIO35、GPIO36、GPIO39这些引脚就只支持INPUT一种模式。
2. digitalWrite函数
void digitalWrite(uint8_t pin, uint8_t val);该函数的作用是往某个数字引脚输出高/低电平,各个参数作用如下:
pin:需要输出的引脚的编号,比如11、12、13
val:需要设置的电平的值,取值可为两种:
HIGH:高电平,HIGH为Arduino框架内部的宏定义,实际值为1,对于ESP32来说,高电平的电压接近3.3V
LOW:低电平,LOW为Arduino框架内部的宏定义,实际值为0,对于ESP32来说,低电平的电压范围接近0V
温馨提示:
该函数输出的是数字信号,非零即一,只能控制开/关,无法控制强度、亮度、转速等
3. digitalRead函数
int digitalRead(uint8_t pin);该函数的作用是从某个数字引脚读取电平信号,返回值为1(或者HIGH,表示高电平)或者0(或者LOW,表示低电平),参数作用如下:
pin:需要读取电平信号的引脚的编号,比如11、12、13
4. analogWrite函数
void analogWrite(uint8_t pin, int value);该函数的作用是往某个支持PWM的引脚输出PWM信号,PWM信号的作用主要用于电机调速,LED灯亮度控制灯,关于PWM`的用法,后续章节将详细讲解,也会有更多高阶玩法,函数各个参数的作用如下:
pin:支持PWM信号的引脚,
ESP32上,所有支持OUTPUT的引脚都支持输出PWM信号;value:PWM的值,取值范围为
[0,255],值越大,LED亮度越大,电机转速越快,反之亦然。
5. analogRead函数
int digitalRead(uint8_t pin);该函数的作用是从某个模拟引脚读取模拟信号的值,返回值与单片机ADC位数有关系,比如10位的ADC,则返回值为0到2的10次方减一,也就是[0, 1023], 12位的ADC,则返回值为[0, 4095],这意味着ESP32可以将0-3.3伏特的电压输入信号映射到数值0-4095。参数作用如下:
pin:引脚编号,比如11、12、13
温馨提示:
在模拟输入引脚没有任何连接的情况下,用analogRead()指令读取该引脚,这时获得的返回值为不固定的数值。这个数值可能受到多种因素影响,如将手靠近引脚也可能使得该返回值产生变化。
6. delay函数
void delay(uint32_t ms);该函数的作用是让程序在调用该函数的地方延迟(等待)一段时间,时间单位是毫秒(ms)
7. delayMicroseconds函数
void delayMicroseconds(uint32_t us);该函数与delay函数作用一样,只是时间单位换成了微秒(us)
8.millis()函数
功能:返回自Arduino板上电以来经过的毫秒数。
返回值:无符号长整型。
示例:unsigned long current_time = millis(); 获取当前时间。
9.Arduino内置数学库
提供了一系列数学函数,如三角函数(sin、cos、tan)、对数函数(log、log10)、指数函数(exp)、幂函数(pow)等。使用这些函数前,需在代码中包含<math.h>头文件。
10.Serial.begin(baud)
功能:初始化串口通信并设置波特率。
参数:baud(波特率,如9600、19200等)。
示例:Serial.begin(9600); 初始化串口通信并设置波特率为9600。
11.Serial.print()
功能:向串口发送数据,不自动换行。
示例:Serial.print("Hello, World!"); 向串口发送字符串。
12.Serial.println()
功能:向串口发送数据,并在末尾添加换行符。
示例:Serial.println("Hello, World!"); 向串口发送字符串并换行。
13.map(value, in_min, in_max, out_min, out_max)
功能:将一个值从一个范围映射到另一个范围。
参数:value(要映射的值),in_min和in_max(输入范围的最小值和最大值),out_min和out_max(输出范围的最小值和最大值)。
返回值:映射后的值。
示例:int pwm_value = map(analog_value, 0, 1023, 0, 255); 将0~1023之间的模拟信号值映射到0~255之间的PWM信号值。
14.random(min, max)
功能:生成一个指定范围内的随机数。
参数:min(最小值),max(最大值,不包括此值)。
返回值:指定范围内的随机整数。
示例:int randNum = random(1, 101); 生成1到100之间的随机整数。
15.tone(pin, frequency)
功能:在指定引脚上产生固定频率的PWM信号,通常用于驱动扬声器发声。
参数:pin(数字引脚编号),frequency(频率,单位为赫兹)。
示例:tone(8, 440); 在引脚8上产生440Hz的PWM信号。
16.noTone(pin)
功能:停止在指定引脚上产生PWM信号。
参数:pin(数字引脚编号)。
示例:noTone(8); 停止在引脚8上产生PWM信号。
17.pulseIn(pin, value)
功能:读取指定引脚上脉冲的持续时间。
参数:pin(数字引脚编号),value(HIGH或LOW,指定要测量的脉冲类型)。
返回值:脉冲持续时间,单位为微秒。
示例:long duration = pulseIn(3, HIGH); 读取引脚3上的高电平脉冲持续时间。
18.vTaskDelete(TaskHandle_t xTaskToDelete)
表示要删除的任务的句柄,这个句柄就是上面xTaskCreate函数中传入的最后一个参数~,如果参数设置为NULL,表示删除当前任务。一般建议,该函数在每个任务运行结束时传入NULL调用,不建议跨任务删除,有些情况下会产生一些不可预知的问题。
19.attachInterrupt(uint8_t pin, std::function<void(void)> intRoutine, int mode)
pin:中断触发的中断号,虽然对于ESP32,这个参数可以直接写GPIO引脚编号,但是建议尽量调用digitalPinToInterrupt函数,将原始GPIO引脚转换成中断系统中的对应编号使用,比如digitalPinToInterrupt(23),ESP32能直接使用GPIO编号,是因为对于ESP32,digitalPinToInterrupt函数的返回值就是原样返回,但对于其他类型的单片机,逻辑就不一样了
intRoutine:中断处理函数,就是当触发中断时,需要执行的操作,注意这个操作应该尽可能轻量,不能将繁重的工作写在中断处理函数中,这样会极大降低单片机响应,最糟糕时可能导致单片机重启
mode:中断触发的模式,一共有以下几种模式可选

20.detachInterrupt(uint8_t pin)
该函数用于解除某个中断号的中断逻辑
pin:要取消中断程序的中断号,同样地,建议调用digitalPinToInterrupt函数来将GPIO编号转换成中断号