首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按顺序按4,5,6开关导致关闭rgb的代码不起作用

按顺序按4,5,6开关导致关闭rgb的代码不起作用
EN

Stack Overflow用户
提问于 2022-11-05 11:40:00
回答 1查看 23关注 0票数 1

我在做感光报警器。当距离低于5cm以上的notes[] 5次,压电扬声器关闭。我想通过按4,5,6开关顺序关闭led rgb。按4、5、6开关顺序关闭led rgb的代码不起作用。怎么了?下面是一个代码。

代码语言:javascript
复制
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是关闭的。

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 13:37:07

这里有一些错误,但是让我们关注一下你们的4,5,6序列。在循环中,您需要跟踪是否按下了按钮以及按了什么按钮。您想在这里使用的是一个case/开关设置。https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/

每次在循环过程中,您都会检查是否按下了按钮。然后翻查你的案子。我会这样做:(伪代码)

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74327381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档