C++ 我需要帮助获得一个按钮,以激活一个积极的蜂鸣器使用arduino

C++ 我需要帮助获得一个按钮,以激活一个积极的蜂鸣器使用arduino,c++,c,arduino,arduino-uno,C++,C,Arduino,Arduino Uno,我正在尝试执行以下操作: { digitalWrite(buzzer, HIGH); delay(1000); digitalWrite(buzzer, LOW); delay(1000); } 按下按钮A,蜂鸣器静音 按下按钮B,蜂鸣器以预定频率打开 行之有效的措施: int buttonApin = 9; int buttonBpin = 8; int buzzer = 12; void setup() { ///put everything to output

我正在尝试执行以下操作:

{
  digitalWrite(buzzer, HIGH);
  delay(1000);
  digitalWrite(buzzer, LOW);
  delay(1000); 
}
按下按钮A,蜂鸣器静音

按下按钮B,蜂鸣器以预定频率打开

行之有效的措施:

int buttonApin = 9;
int buttonBpin = 8;
int buzzer = 12;

void setup() {
   ///put everything to output
}

void loop() {
   if (digitalRead(buttonApin) == LOW)
   {
      digitalWrite(buzzer, LOW);
   }
   if (digitalRead(buttonBpin == LOW)
   {
      digitalWrite(buzzer, HIGH);
   }
这个很好用。我按下按钮A,没有声音,然后我按下按钮B,蜂鸣器打开并保持打开,直到我再次按下按钮A

我的问题是,我将“digitalWrite(蜂鸣器,高)”替换为以下内容:

{
  digitalWrite(buzzer, HIGH);
  delay(1000);
  digitalWrite(buzzer, LOW);
  delay(1000); 
}

当我这样做并按下按钮B时,蜂鸣器只会发出1秒钟的声音。但是,当我按住蜂鸣器时,它会按照需要执行。我如何使蜂鸣器在不必按住按钮B的情况下继续在高和低之间振荡,直到我再次按下按钮A发出停止信号?一个选项s是使用一个状态变量和时间,该变量和时间从on切换到off,直到按下按钮为止。您只需不断循环并记录时间。当按下按钮a时,灯熄灭,代码等待按钮B按下。它将永远这样做

#define OFF 0
#define ON 1
#define BUTTON 2

static char state = ON;
static unsigned long prevTime = 0;

void loop() {
   if (digitalRead(buttonApin) == HIGH)
   {
      state = BUTTON;
      digitalWrite(buzzer, LOW);
   }
   if (digitalRead(buttonBpin) == HIGH)
   {
      state = ON;
   }

   if (state != BUTTON && (millis() - prevTime >= 2000)) {
     digitalWrite(buzzer, HIGH);
     prevTime = millis();
     state = ON - state;
   } 
}

一个选项是使用一个状态变量和时间,该变量和时间在按下按钮之前从on切换到off。您只需不断循环并记录时间。当按下按钮a时,灯将关闭,代码将等待按钮B按下。它将永远这样做

#define OFF 0
#define ON 1
#define BUTTON 2

static char state = ON;
static unsigned long prevTime = 0;

void loop() {
   if (digitalRead(buttonApin) == HIGH)
   {
      state = BUTTON;
      digitalWrite(buzzer, LOW);
   }
   if (digitalRead(buttonBpin) == HIGH)
   {
      state = ON;
   }

   if (state != BUTTON && (millis() - prevTime >= 2000)) {
     digitalWrite(buzzer, HIGH);
     prevTime = millis();
     state = ON - state;
   } 
}

您好,先生。我可以检查一下您的示意图吗?我想您正在将蜂鸣器和按钮连接在同一个地面上。蜂鸣器的按钮应该与蜂鸣器分开,这样,如果没有按下蜂鸣器,电流就不会被切断。

您好,先生。我可以检查一下您的示意图吗?我想您正在连接蜂鸣器和接头在同一地面上。蜂鸣器按钮应与蜂鸣器分开,以便在未按下蜂鸣器时不会切断电流