[PICO][Arduino风格]程序结构

说明
采用Arduino风格时,语法结构与Arduino一致。只有引脚定义等硬件相关部分有差异。

因此以下文档采用Arduino的语法,但是引脚定义修改为PICO的。

Arduino 程序的基本结构

每个Arduino程序都包含以下两个主要函数:

  1. setup() 函数:这个函数在程序启动时只运行一次。它通常用于初始化变量、设置引脚模式、启动串口通信等。

  2. loop() 函数:这个函数在setup()函数执行完毕后会不断重复运行。它包含了程序的主要逻辑,如读取传感器数据、控制输出设备等。

示例代码

以下是一个简单的Arduino程序示例,展示了setup()loop()函数的基本用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void setup() {
// 初始化串口通信,设置波特率为9600
Serial.begin(9600);

// 设置GP13引脚为输出模式
pinMode(13, OUTPUT);
}

void loop() {
// 打开GP13引脚的LED
digitalWrite(13, HIGH);

// 等待1秒
delay(1000);

// 关闭GP13引脚的LED
digitalWrite(13, LOW);

// 等待1秒
delay(1000);
}

代码解释

  • setup() 函数

    • Serial.begin(9600);:初始化串口通信,设置波特率为9600。
    • pinMode(13, OUTPUT);:将GP13引脚设置为输出模式,用于控制LED。
  • loop() 函数

    • digitalWrite(13, HIGH);:将GP13引脚设置为高电平,点亮LED。
    • delay(1000);:等待1秒。
    • digitalWrite(13, LOW);:将GP13引脚设置为低电平,关闭LED。
    • delay(1000);:再次等待1秒。

实际应用案例

案例:闪烁LED

假设你有一个连接到Arduino的LED灯,你希望它每隔1秒闪烁一次。你可以使用上述代码来实现这个功能。通过setup()函数初始化引脚,然后在loop()函数中不断切换LED的状态,从而实现闪烁效果。

案例:读取温度传感器

假设你有一个温度传感器连接到Arduino的模拟输入引脚。你可以在setup()函数中初始化串口通信,然后在loop()函数中不断读取传感器的值并将其发送到串口监视器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void setup() {
// 初始化串口通信
Serial.begin(115200);
}

void loop() {
// 读取模拟输入引脚GP26的值
int sensorValue = analogRead(26);

// 将读取的值发送到串口监视器
Serial.println(sensorValue);

// 等待500毫秒
delay(500);
}

总结

Arduino程序的基本结构由setup()loop()两个函数组成。setup()函数用于初始化设置,而loop()函数则包含了程序的主要逻辑,并会不断重复执行。理解这两个函数的作用是编写Arduino程序的基础。

附加资源与练习

  • 练习1:修改上述闪烁LED的代码,使LED的闪烁频率变为每500毫秒一次。
  • 练习2:编写一个程序,读取光敏电阻的值,并根据光线强度控制LED的亮度。
  • 附加资源:Arduino官方文档提供了丰富的教程和示例代码,建议初学者多参考官方文档以加深理解。

附:
1.使用电位器来模拟传感器

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup() {

  Serial1.begin(115200);

  Serial1.println("Hello, Raspberry Pi Pico!");

}



void loop() {

  int sensorValue = analogRead(26);

  Serial1.println(sensorValue);

  delay(1000);

}

2.使用电位器来控制LED的亮度

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 定义引脚

#define POT_PIN    26   // 电位器接 ADC0 (GP26)

#define LED_PIN    0    // LED 接 GP0 (支持 PWM)



void setup() {

  Serial.begin(115200);

  pinMode(LED_PIN, OUTPUT);   // 设置 LED 引脚为输出

  Serial.println("开始调光...");

}



void loop() {

  // 读取电位器模拟值 (0 ~ 4095)

  int rawValue = analogRead(POT_PIN);

  // 将 0-4095 映射到 PWM 占空比 0-255

  int brightness = map(rawValue, 0, 4095, 0, 255);

  // 限制范围(map 可能因溢出需要约束,但这里输入输出范围精确,可以不用)

  brightness = constrain(brightness, 0, 255);

  // 设置 LED 亮度

  analogWrite(LED_PIN, brightness);

  // 可选:在串口监视器查看数值

  Serial.print("Raw ADC: ");

  Serial.print(rawValue);

  Serial.print(" -> Brightness: ");

  Serial.println(brightness);

  delay(50);  // 短暂延时,避免串口输出过快

}

[PICO][Arduino风格]程序结构
https://ka5fxt.cn/2026/03/29/PICO-Arduino风格-程序结构/
发布于
2026年3月29日
许可协议