一、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); // 讀取模擬輸入