问题描述
我正在制作一些我使用过蜂鸣器的东西,每当我的输出设备与输出终端断开连接时,蜂鸣器就会打开,
为了使蜂鸣器静音,
我使用按钮作为切换开关我将其命名为 buttonmute
我希望每当输出断开连接然后警报打开,如果说第一个输出断开连接然后蜂鸣器打开,如果我按下静音按钮它会关闭,如果第二个输出断开连接然后蜂鸣器应该再次打开,如果我再次按下静音按钮,然后蜂鸣器应关闭.. 就像事件确认模式。
解决方法
首先,您可能需要一个可以打开或关闭蜂鸣器的功能。您在下面看到的函数会这样做,同时还会跟踪当前状态以阻止呼叫,例如尝试启用已启用的蜂鸣器。
bool buzzerState = false;
void enableBuzzer(bool newBuzzerState){
if(buzzerState == newBuzzerState) return; //no change needed
buzzerState = newBuzzerState;
if(newBuzzerState){ //Turn buzzer on/off
digitalWrite(buzzerPin,HIGH);
}else{
digitalWrite(buzzerPin,LOW);
}
}
之后,您只需调用 enableBuzzer(bool newBuzzerState)
函数即可。对于您按下按钮,它可能看起来像这样:
void checkPushButton(){
if(digitalRead(pushButtonInputPin) == LOW){ //If button is pressed
enableBuzzer(false); //Turn buzzer off
}
}
您对输出设备的意思不太清楚,但如果您指的是串行监视器,您可以通过以下方式进行操作:
void checkSerialMoniter(){
if(!Serial){ //if disconnected from the device
enableBuzzer(true); //Turn buzzer on
}
}
!Serial
检查您的串行监视器是否有串行连接,如果没有,它将返回 false。因此运行代码。
checkPushButton()
和 checkSerialMoniter()
必须定期调用以检测更改。最简单的方法是在 void loop()
中简单地调用它们。