我在做感光报警器。当距离低于5cm以上的notes[] 5次,压电扬声器关闭。我想通过按4,5,6开关顺序关闭led rgb。按4、5、6开关顺序关闭led rgb的代码不起作用。怎么了?下面是一个代码。
int pins[]={4,5,6};
int melody[]={262,294,330};
int notes[]={392,392,440,440,392,392,330};
int b=0,r=0,g=0;
void setup() {
// put your setup code here, to run once:
randomSeed(analogRead(A0));
for(int i=0;i<3;i++){
pinMode(pins[i],INPUT);
}
}
int c=0;
int value1=digitalRead(4);
int value2=digitalRead(5);
int value3=digitalRead(6);
void loop() {
// put your main code here, to run repeatedly:
int vin=analogRead(A0);
if (c>5){
// b=0,r=0,g=0;
noTone(8);
//analogWrite(11,b);
//analogWrite(10,r);
//analogWrite(9,g);
// return;
}
if(digitalRead(0)==HIGH){
if(digitalRead(1)==HIGH){
if(digitalRead(2)==HIGH){
b=0,r=0,g=0;
noTone(8);
analogWrite(11,b);
analogWrite(10,r);
analogWrite(9,g);
return;
}
}
}
if(vin>800){
for(int i=0; i<7 ;i++){
tone(8,notes[i],100);
delay(200);
noTone(8);
analogWrite(11,random(256));
analogWrite(10,random(256));
analogWrite(9,random(256));
delay(200);
}
}
long duration = pulseIn(3,HIGH);
long distance=duration/58.2;
if(duration == 0){
return;
}
if (distance<5){
c++;
}
}通过依次按4、5、6开关关闭led rgb的代码,rgb是关闭的。
发布于 2022-11-07 13:37:07
这里有一些错误,但是让我们关注一下你们的4,5,6序列。在循环中,您需要跟踪是否按下了按钮以及按了什么按钮。您想在这里使用的是一个case/开关设置。https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/
每次在循环过程中,您都会检查是否按下了按钮。然后翻查你的案子。我会这样做:(伪代码)
int state = 0; //0=no buttons, 1=4 pressed, 2=4,5 pressed, 3= 4,5,6 pressed
switch(pressedButton) {
case 4:
if(state == 0){
state = 1;
} else state = 0;
case 5:
if(state == 1) {
state = 2;
} else state = 0;
case 6:
if(state == 2) {
state = 3;
} else state = 0;
}
if(state == 3) {
//turn off LED
state = 0;
}https://stackoverflow.com/questions/74327381
复制相似问题