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
相关产品推荐
相关产品推荐

