gpt4 book ai didi

c++ - 我需要帮助获得一个按钮来使用 arduino 激活有源蜂鸣器

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:29 33 4
gpt4 key购买 nike

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

按下按钮 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(buzzer, High); 替换为以下内容时:

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

当我这样做并按下按钮 B 时,蜂鸣器只会发出 1 秒钟的蜂鸣声。但是,当我按住蜂鸣器时,它会按预期执行。我怎样才能让蜂鸣器继续在高低之间振荡,而不必按住按钮 B,直到我再次按下按钮 A 发出停止信号?

最佳答案

一个选项是使用状态变量和时间,它从打开切换到关闭,直到按下按钮。您只需不断循环并记录时间。当按下按钮 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;
}
}

关于c++ - 我需要帮助获得一个按钮来使用 arduino 激活有源蜂鸣器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58849923/

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