You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino Nano程序上传失败:loop()函数重定义错误求助

Arduino编译错误解决与二进制LED显示实现

错误原因

你这代码编译报错的核心原因很简单:重复定义了void loop()函数。Arduino的程序规则里,一个项目只能有一个setup()(用来做初始化)和一个loop()(程序启动后反复执行的主循环)。编译器看到两个一模一样的loop(),根本不知道该执行哪个,直接就报错了。

修复方案+功能实现代码

你的目标是用两个LED以二进制形式显示数字(比如00代表0、01代表1、10代表2、11代表3,循环切换),下面是修正后的完整代码,既解决了编译错误,又实现了需求:

void setup() {
  // 把D2、D3引脚设为输出模式,用来控制两个LED
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
}

// 只保留一个loop()函数,所有LED控制逻辑都写在这里
void loop() {
  // 显示二进制00(数字0):两个LED都熄灭
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  delay(1000); // 每个数字状态停留1秒,可自行修改时长

  // 显示二进制01(数字1):D3灯亮,D2灯灭
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  delay(1000);

  // 显示二进制10(数字2):D2灯亮,D3灯灭
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  delay(1000);

  // 显示二进制11(数字3):两个LED都亮
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  delay(1000);
}

简单说明

  • 删掉了多余的第二个loop()函数,把所有LED控制逻辑合并到同一个主循环里
  • 按照二进制数字的顺序依次切换LED状态,每个状态停留1秒(想改时长就调整delay()里的数字,单位是毫秒)
  • 二进制对应规则:这里把D2当高位、D3当低位,要是你接线的时候反过来了,直接调换每个状态里的引脚参数就行

小提示

如果你的LED是引脚接正极、GND接负极,那HIGH就是亮、LOW就是灭;要是引脚接的是负极、正极接的VCC,那得把代码里的HIGH和LOW反过来写才行。

内容的提问来源于stack exchange,提问作者mculleton04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:50:06