gpt4 book ai didi

c++ - 使用 Arduino 编写一个简单的按钮 LED 电路

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:20 27 4
gpt4 key购买 nike

我连接了两个按钮和五个 LED。在电路中它的顺序是按钮,五个LED和按钮。 LED 的顺序从左到右(从第一个按钮开始)红色、绿色、蓝色、绿色和红色。我使用蓝色(中间)LED 来区分左侧和右侧。按下左按钮时,其相应的绿色按钮亮起,松开按钮时,红色按钮亮起。右侧也有相同的功能。所以我想做的是,当按下两个按钮时,绿灯熄灭,蓝灯亮起。但是,当同时按下两个按钮时,绿灯和蓝灯都会亮起。电路问题的编程错误?这是我的代码:

//Using Arduino UNO

int switchL = 0; //Left button
int switchR = 0; //Right button

void setup() { //LED from left to right
pinMode(3, OUTPUT); //Red
pinMode(4, OUTPUT); //Green
pinMode(5, OUTPUT); //Blue
pinMode(6, OUTPUT); //Green
pinMode(7, OUTPUT); //Red
Serial.begin(9600);

}

void loop() {
switchL = digitalRead(2);
switchR = digitalRead(8);

if (switchL == HIGH) {
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
} else {
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
}
if (switchR == HIGH) {
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
} else {
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
if (switchL == HIGH && switchR == HIGH){
digitalWrite(5, HIGH);
if (digitalRead(5) == HIGH) {
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
} else {
digitalWrite(5, LOW);
}
}
}

最佳答案

如果你绘制一个 I/O 映射会更容易:

switchL switchR |  lR   lG   mB   rG   rR
0 0 | 1 0 0 0 1
0 1 | 1 0 0 1 0
1 0 | 0 1 0 0 1
1 1 | 0 0 1 0 0

并将输出写成输入的函数:

digitalWrite(3, !switchL            );
digitalWrite(4, switchL && !switchR);
digitalWrite(5, switchL && switchR);
digitalWrite(6, !switchL && switchR);
digitalWrite(7, !switchR);

如果您更喜欢继续使用嵌套的 IF,则必须始终牢记每个输出都是两个输入的函数。

关于c++ - 使用 Arduino 编写一个简单的按钮 LED 电路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com