我的Arduino程序中if语句不生效,求排查问题并修正其他代码错误
BattleBots竞技场启动序列代码修正
原代码存在的问题
- 变量冗余:重复定义了按钮引脚变量
pinButton/pinButton2,counter、val变量定义后未使用 - 结构错误:Arduino框架已内置main函数,无需自行定义,原有逻辑写在自定义main函数中完全不会执行,且
loop函数仅读取按钮状态无任何业务逻辑 - 作用域错误:按钮状态变量
buttonState/buttonState2是loop函数内的局部变量,函数外无法访问 - 语法错误:
if判断后多写了分号导致判断失效,自定义main函数缺少开头大括号 - 硬件兼容问题:按钮引脚设为
INPUT模式无上下拉电阻时会浮空,状态读取不稳定;PWM最大值为255,原代码写的225属于笔误
修正后完整代码
// 按钮引脚定义 const int buttonPin = 13; const int buttonPin2 = 3; // 第一个RGB LED引脚 const int redpin = 11; const int bluepin = 10; const int greenpin = 9; // 第二个RGB LED引脚 const int redpin2 = 7; const int bluepin2 = 6; const int greenpin2 =5; void setup() { // 按钮设为上拉输入,外接按钮接GND即可,无需额外电阻 pinMode(buttonPin, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); // LED引脚设为输出 pinMode(redpin, OUTPUT); pinMode(bluepin, OUTPUT); pinMode(greenpin, OUTPUT); pinMode(redpin2, OUTPUT); pinMode(bluepin2, OUTPUT); pinMode(greenpin2, OUTPUT); Serial.begin(9600); } void loop() { // 读取两个按钮状态 int buttonState = digitalRead(buttonPin); int buttonState2 = digitalRead(buttonPin2); // 两个按钮同时按下(LOW)时,两个LED亮蓝色 if (buttonState == LOW && buttonState2 == LOW) { analogWrite(redpin, 0); analogWrite(bluepin, 255); analogWrite(greenpin, 0); analogWrite(redpin2, 0); analogWrite(bluepin2, 255); analogWrite(greenpin2, 0); } else { // 不同时按下时,第一个亮红色,第二个亮绿色 analogWrite(redpin, 255); analogWrite(bluepin, 0); analogWrite(greenpin, 0); analogWrite(redpin2, 0); analogWrite(bluepin2, 0); analogWrite(greenpin2, 255); } delay(10); }
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

