STEM学习平台团队 bio photo

Email

Zhihu

Bilibili

Arduino 基础入门教程:LED 闪烁程序解析 本实验目标:完成一个LED灯持续闪烁的程序

目标分析:为了完成这个实验,我们首先对于它进行系统化的分析

传感器:无 控制器:UNO/ESP32 执行器:LED灯

接着是效果分析

有一个小灯,能够做到每隔一秒亮一次灭一次

明确目标系统,开始正式学习—

代码全文

void setup() {            //初始化函数
  pinMode(13, OUTPUT);    // 设置13号引脚为输出模式
}

void loop() {             //重复执行函数
  digitalWrite(13, HIGH); // 输出高电平
  delay(1000);            // 等待1000毫秒(1秒)
  digitalWrite(13, LOW);  // 输出低电平
  delay(1000);            // 再次等待1秒
}

代码逐行解析

1. void setup() { ... }

  • 作用:Arduino开发板通电后,此函数仅执行一次,用于初始化设置。
  • 详细解释
    • void:表示此函数没有返回值(暂时无需深究,固定语法)。
    • setup():函数名称,必须按照此格式定义。
    • { ... }:大括号内包含初始化代码。

关键代码:pinMode(13, OUTPUT);

  • pinMode:Arduino内置函数,用于设置引脚的工作模式。
  • 13:目标引脚的编号(Arduino开发板上的物理接口)。
  • OUTPUT:模式参数,表示将引脚设置为输出模式(可控制外部设备)。
  • ;:语句结束符,表示一行代码结束。

2. void loop() { ... }

  • 作用:在setup()执行后,此函数会无限循环运行,包含程序的主要逻辑。
  • 详细解释
    • loop():函数名称,固定语法。
    • { ... }:大括号内包含循环执行的代码。

关键代码解析:

行1:digitalWrite(13, HIGH);

  • digitalWrite:向数字引脚输出高电平(HIGH)或低电平(LOW)。
  • 13:目标引脚编号(与setup()中设置的引脚一致)。
  • HIGH:参数值,表示输出5V电压。
  • 作用:使13号引脚通电,若连接LED则会发光。

行2:delay(1000);

  • delay:暂停程序执行一段时间。
  • 1000:时间参数,单位为毫秒(ms),1000ms = 1秒。
  • 作用:保持当前状态(LED亮起)1秒钟。

行3:digitalWrite(13, LOW);

  • LOW:参数值,表示输出0V电压。
  • 作用:断开13号引脚的电压,LED熄灭。

行4:delay(1000);

  • 作用:保持LED熄灭状态1秒,随后循环重新开始。

核心概念详解

1. 电平(Voltage Level)

  • 定义:电路中某一点的电压状态。
  • 在Arduino中的实现
    • 高电平(HIGH):5V电压(部分开发板为3.3V),表示“开启”状态。
    • 低电平(LOW):0V电压,表示“关闭”状态。
  • 应用:通过控制电平变化,可驱动LED、继电器等设备。

2. 数字信号(Digital Signal)

  • 定义:仅有两种离散状态的信号(HIGH/LOW)。
  • 特点
    • 简单可靠,抗干扰能力强。
    • 适用于开关控制(如LED亮灭、电机启停)。

3. 引脚模式(Pin Mode)

  • 输入模式(INPUT)
    • 引脚用于接收外部信号(如读取按钮状态、传感器数据)。
    • 示例:pinMode(2, INPUT); // 设置2号引脚为输入模式。
  • 输出模式(OUTPUT)
    • 引脚用于控制外部设备(如LED、蜂鸣器)。
    • 示例:pinMode(13, OUTPUT); // 设置13号引脚为输出模式。

4. 时间控制(delay()函数)

  • 原理:暂停程序执行,期间Arduino不执行任何操作。
  • 注意事项
    • 单位是毫秒(1秒 = 1000毫秒)。
    • 过长延时可能导致程序响应迟缓,需根据场景调整。

硬件连接说明

1. 板载LED(无需接线)

  • Arduino UNO开发板的13号引脚已连接一个黄色LED和限流电阻。
  • 直接上传代码即可观察到板载LED的闪烁效果。

2. 外接LED电路(可选)

13号引脚 → 220Ω电阻 → LED正极(长脚)
LED负极(短脚) → GND(接地)
  • 电阻作用:限制电流,防止LED过流损坏(推荐220Ω~1kΩ)。
  • 极性注意:LED长脚为正极,短脚为负极,接反则不发光。

常见问题解答

Q1:上传代码后LED不亮

  • 检查步骤
    1. 确认USB线连接正常,开发板通电(电源指示灯亮起)。
    2. 检查代码是否上传成功(IDE提示“上传完成”)。
    3. 外接LED时,确认正负极连接正确。

Q2:delay(1000)能否修改?

  • 可以自由调整
    • delay(500):LED亮灭各0.5秒,闪烁频率加快。
    • delay(2000):LED亮灭各2秒,闪烁频率减慢。

Q3:为什么需要两个digitalWritedelay

  • 逻辑解析
    1. digitalWrite(13, HIGH) → LED亮。
    2. delay(1000) → 保持亮1秒。
    3. digitalWrite(13, LOW) → LED灭。
    4. delay(1000) → 保持灭1秒。
  • 缺少任一语句将导致闪烁异常(如常亮或快速闪烁)。

扩展实验

实验1:不对称闪烁

void loop() {
  digitalWrite(13, HIGH);
  delay(200);   // 亮0.2秒
  digitalWrite(13, LOW);
  delay(800);   // 灭0.8秒
}

实验2:多LED控制

void setup() {
  pinMode(12, OUTPUT); // 新增12号引脚控制第二个LED
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  delay(500);
}

总结

本代码通过控制引脚电平变化实现LED周期性闪烁,涉及数字信号输出、引脚模式设置和时间延迟等基础概念。理解此程序后,可进一步学习传感器输入、PWM调光等进阶内容。


有问题找柯萌ദ്ദി˶•̀֊•́)✧
mingyoufhh@outlook.com