Skip to content

Latest commit

 

History

History
181 lines (115 loc) · 5.8 KB

File metadata and controls

181 lines (115 loc) · 5.8 KB

第 3 章:程序结构和 GPIO 输出

本章要解决什么问题

从这一章开始,我们正式进入传统嵌入式入门里的基础输入输出。先学输出,因为输出最容易观察:LED 会亮,蜂鸣器会响,继电器会吸合。

本章会用自然语言生成一个 GPIO 输出程序,同时理解 Arduino 程序里最重要的两个函数:setup()loop()

图片占位 3-1:Blockly 积木与 Arduino/C++ 代码对照图,标出初始化部分和循环部分。

3.1 setup()loop() 是什么

Arduino 类程序通常分成两部分:

  • setup():开发板启动后只运行一次,用来做初始化。
  • loop():开发板启动后会一直重复运行,用来写主要逻辑。

可以把它想成这样:

开机先准备一次 -> 然后一直循环做事情

比如 LED 闪烁项目中,setup() 负责告诉开发板“这个引脚要当输出用”,loop() 负责不断点亮、等待、熄灭、等待。

3.2 什么是 GPIO 输出

GPIO 是通用输入输出引脚。作为输出时,开发板可以让某个引脚输出高电平或低电平。

在入门阶段,可以先简单理解:

  • 高电平:通常接近 3.3V 或 5V,能让 LED 亮、让模块收到“开”的信号。
  • 低电平:接近 GND,能让 LED 灭、让模块收到“关”的信号。

不同开发板的电压可能不同,所以接模块前要看开发板和模块说明。

3.3 用自然语言描述输出行为

控制输出时,提示词要说清楚三件事:

  1. 控制哪个引脚。
  2. 什么情况下输出高电平或低电平。
  3. 每个状态持续多久,是否循环。

例如:

我使用 Arduino Uno。请让 D8 引脚连接的外接 LED 每 500 毫秒闪烁一次。外接 LED 需要串联 220 欧姆电阻。请生成 Blockly 程序,并解释对应 Arduino/C++ 代码。

这句话已经包含了引脚、模块、时间和安全提醒。

3.4 实验项目一:外接 LED 闪烁

硬件准备

  • Arduino Uno 或兼容开发板。
  • LED 一个。
  • 220 欧姆或 330 欧姆电阻一个。
  • 杜邦线若干。

接线说明

常见接法:

D8 -> 电阻 -> LED 长脚
LED 短脚 -> GND

图片占位 3-2:外接 LED 接线图,标注 D8、电阻、LED 长脚、LED 短脚、GND。

提示词

我使用 Arduino Uno 做一个外接 LED 闪烁实验。

硬件连接:
1. LED 接在 D8 引脚。
2. D8 先连接 220 欧姆电阻,再连接 LED 长脚。
3. LED 短脚连接 GND。

程序行为:
1. 开机后把 D8 设置为输出。
2. LED 点亮 500 毫秒。
3. LED 熄灭 500 毫秒。
4. 一直重复。
5. 串口输出当前 LED 状态。

请生成 Blockly 程序逻辑,并说明对应 Arduino/C++ 代码思路。

代码思路

const int ledPin = 8;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  Serial.println("LED ON");
  delay(500);

  digitalWrite(ledPin, LOW);
  Serial.println("LED OFF");
  delay(500);
}

3.5 实验项目二:蜂鸣器提示音

蜂鸣器也是常见输出设备。入门时可以先使用有源蜂鸣器,它像 LED 一样,给高电平就响,给低电平就停。

提示词示例:

我使用 Arduino Uno 和一个有源蜂鸣器。蜂鸣器信号脚接 D9,GND 接 GND。请让蜂鸣器响 200 毫秒,停 800 毫秒,并循环执行。串口输出“BEEP”和“SILENT”。请生成 Blockly 程序和接线检查清单。

图片占位 3-3:有源蜂鸣器接线图,标注 D9、VCC 或信号脚、GND。

注意:蜂鸣器有有源和无源两类。入门时先用有源蜂鸣器更容易。如果使用无源蜂鸣器,需要生成一定频率的信号,后续可以再学习。

3.6 实验项目三:继电器开关模拟

继电器可以控制外部电路,但新手实验时不建议直接接高压设备。可以先只观察继电器模块的指示灯和吸合声音。

提示词示例:

我使用 Arduino Uno 和一个低压继电器模块。继电器 IN 接 D7,VCC 接 5V,GND 接 GND。请让继电器每 2 秒切换一次状态,并在串口输出当前状态。请特别提醒我不要在入门实验中连接市电负载。

图片占位 3-4:继电器模块低压侧接线图,并用醒目标注“入门实验不要连接市电”。

3.7 输出类项目的检查清单

每次做输出控制,都先检查:

  • 引脚是否设置为输出。
  • 外接 LED 是否串联电阻。
  • 模块电压是否和开发板匹配。
  • 模块电流是否超过开发板引脚能力。
  • 执行器是否需要外接电源。
  • GND 是否连接正确。
  • 串口日志是否能反映程序状态。

3.8 常见问题

LED 不亮

检查 LED 极性、电阻位置、GND 是否连接、引脚号是否写错。

LED 一直亮,不闪烁

检查 delay() 是否存在,程序是否卡在某个条件里,是否接到了常亮电源引脚。

蜂鸣器不响

确认蜂鸣器类型、电压、正负极和信号引脚。无源蜂鸣器不能只靠简单高低电平发出稳定提示音。

继电器反着工作

有些继电器模块是低电平触发。可以让 AI 根据模块说明修改逻辑。

3.9 本章练习

  1. 把 LED 闪烁间隔改成 200 毫秒。
  2. 让 LED 闪三次后停 2 秒,再继续重复。
  3. 让蜂鸣器响一短一长,模拟提示音。
  4. 让 AI 解释 pinMode()digitalWrite()delay() 分别做什么。

3.10 本章小结

本章学习了 GPIO 输出和 Arduino 程序结构。只要能说清楚“哪个引脚、什么时候开、什么时候关、持续多久”,AI 就能更稳定地生成输出控制程序。

但输出设备也带来硬件风险。LED 要限流,执行器要看电源,继电器不要直接上手接高压。自然语言可以帮你生成方案,安全检查仍然要自己做。