Arduino程序函数详解与实际案例
一、Arduino程序的核心架构与函数解析
Arduino程序的核心由两个函数构成:setup()
和 loop()
。这两个函数是所有Arduino代码的骨架,它们的合理使用决定了程序的结构和功能。
1.1 setup()
函数:初始化阶段
setup()
函数在程序启动时仅执行一次,用于完成初始化配置,例如设置引脚模式、启动串口通信或初始化外设。
示例代码
void setup() {pinMode(13, OUTPUT); // 设置13号引脚为输出模式(LED)Serial.begin(9600); // 初始化串口通信,波特率9600
}
编程知识扩展
-
引脚模式配置:
pinMode(pin, INPUT/OUTPUT)
:定义引脚为输入或输出。- 输入模式:用于读取传感器数据(如按钮状态)。
- 输出模式:用于控制外设(如LED亮度)。
-
串口通信:
Serial.begin(baudRate)
:初始化串口,波特率需与PC端一致(如9600)。Serial.print()
/Serial.println()
:向串口发送数据,便于调试和实时监控。
实际应用
- 调试工具:通过串口打印传感器数据(如温度、湿度),验证硬件连接是否正常。
- 错误提示:在初始化失败时输出错误信息,帮助快速定位问题。
1.2 loop()
函数:主循环逻辑
loop()
函数无限循环执行,包含程序的主要逻辑,例如控制LED闪烁、读取传感器数据或响应用户输入。
示例代码
void loop() {digitalWrite(13, HIGH); // 点亮LEDdelay(1000); // 延时1秒digitalWrite(13, LOW); // 熄灭LEDdelay(1000); // 延时1秒
}
编程知识扩展
-
延时函数:
delay(milliseconds)
:阻塞式延时,适用于简单定时任务。- 非阻塞延时:使用时间戳计算避免程序卡顿(见下文“高级延时策略”)。
-
状态机设计:
- 通过定义多个状态(如“等待”、“运行”、“结束”)管理复杂逻辑,提高代码可读性和可维护性。
实际应用
- LED控制:实现呼吸灯效果(通过PWM调节亮度)。
- 传感器采集:周期性读取环境数据并存储。
二、编程知识扩展:从基础到进阶
2.1 串口通信的高级应用
串口通信不仅是调试工具,还可实现与外部设备的数据交换。
示例代码:读取模拟传感器数据
void setup() {Serial.begin(9600);
}void loop() {int sensorValue = analogRead(A0); // 读取模拟输入