一、Arduino项目最基本的函数
不管是什么程序,都会有一个程序的入口,比如传统C/C++程序,它的入口就是main函数,但是在Arduino项目中我们并没有看到这个函数,那Arduino的程序是从哪里开始运行的呢?
实际上Arduino的程序入口也是main函数,只不过它是封装在Arduino核心库中的,我们看不到而已,为了简化开发的流程,Arduino只给出了setup() 函数和loop()函数,而这两个函数实际上是在main函数里面被调用执行的。下面我们来具体讲解一下这两个函数的作用。
1、setup() 函数
Arduino控制器通电或复位后,即会开始执行setup() 函数中的程序,该部分只会执行一次。
通常我们会在setup() 函数中完成Arduino的初始化设置,如配置I/O口状态,初始化串口等操作。
2、loop()函数
在setup() 函数中的程序执行完后,Arduino会接着执行loop() 函数中的程序。而loop()函数是一个死循环,其中的程序会不断的重复运行。
通常我们会在loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等。
GPIO
1、初始化GPIO
pinMode(pin, mode)
作用:设置一个引脚(pin)作为GPIO时的I/O模式。
参数:
参数 | 说明 |
pin | 指定配置的引脚编号 |
mode | 指定的配置模式。通常可用模式有三种, INPUT:输入模式,OUTPUT:输出模式,INPUT_PULLUP :输入上拉模式 |
INPUT_PULLUP:作为数字输入,且使能引脚的内部上拉电阻
注意:
a、引脚作为PWM输出时,无需先前使用pinMode配置其模式,因为PWM本身就代表了输出的意思。且官方库源代码中可以发现,它已经帮我们配置为输出了。
b、模拟引脚也可以作为数字引脚使用,完全OK。这在数字引脚不够用的情况下非常有用。
2、GPIO数字输出
digitalWrite(pin, value)
作用:设置一个数字输出引脚的输出电平值,HIGH或者LOW。
参数:
参数 | 说明 |
pin | 指定配置的引脚编号 |
value | 指定输出的电平。HIGH:输出高电平,LOW:输出低电平 |
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));
}
}
控制LED灯
void setup() {
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 初始化引脚,把引脚2设置为输出模式,引脚号根据自己的实际使用设置
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2, LOW); // 把引脚2设置为低电平,如果2引脚连接的是LED的负极则灯亮,如果是正极则灯灭
}
延时函数,定时1s循环点亮和熄灭LED灯,让它闪烁起来。
示例代码:
void setup() {
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 初始化引脚,把引脚2设置为输出模式,引脚号根据自己的实际使用设置
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2, LOW); // 把引脚2设置为低电平,如果2引脚连接的是LED的负极则灯亮,如果是正极则灯灭
delay(1000); // 延时1000ms
digitalWrite(2, HIGH); // 把引脚2设置为低电平
delay(1000); // 延时1000ms
}
4、GPIO模拟输入:analogRead(pin)
注意 : 模拟输入是通过PWM实现的, 所以不需要初始化PIN
analogRead(4)
5. 模拟信号输入分辨率: analogSetWidth(bit);
bit的值 | 范围 |
9 | 0~511 |
10 | 0~1023 |
11 | 0~2047 |
12(默认) | 0~4095 |
1、串口初始化
Serial.begin(speed, config)
参数
speed:波特率,一般取值9600,115200等。
config:设置数据位、校验位和停止位。默认SERIAL_8N1表示8个数据位,无校验位,1个停止位。
返回值:无。
2、关闭串口
Serial.end()
描述:禁止串口传输。此时串口Rx和Tx可以作为数字IO引脚使用。
原型:Serial.end()
参数:无。
返回值:无。
3、串口打印
Serial.print()
描述:串口输出数据,写入字符数据到串口。
原型:
Serial.print(val)
Serial.print(val, format)
参数:
val:打印的值,任意数据类型。
config:输出的数据格式。BIN(二进制)、OCT(八进制)、DEC(十进制)、HEX(十六进制)。对于浮点数,此参数指定要使用的小数位数。
4、串口输出数据并换行 println() 和 printf()
Serial.println()
Serial.printf()
描述:串口输出数据并换行。
原型:
Serial.println(val)
Serial.println(val, format)
参数:
val:打印的值,任意数据类型。
config:输出的数据格式。
返回值:返回写入的字节数。
附: 常用格式字符及转义字符
字符 | 说明 |
%o | 八进制整数输出 |
%d | 十进制整数输出 |
%x | 十六进制整数输出 |
%f | 浮点输出,默认6位小数 |
%c | 单字符输出 |
%s | 字符串输出 |
\n | 换行 |
\r | 回车 |
\t | Tab制表符 |