设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒,长鸣不限时,但是此时应设置一个按键能够使长鸣结束
设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒,长鸣不限时,但是此时应设置一个按键能够使长鸣结束
关注这个蜂鸣器报警电路可以通过集成电路 NE555 实现,具体电路图如下:

其中,K1、K2、K3为按键,用于启动不同的报警方式。R1、R2、R3是限流电阻,C1是一个电容,RA是一个调节精度电阻,RP是一个调节周期电阻,将这两个电阻变化得到不同的鸣叫频率。LED指示灯,用于指示集成电路工作状态。
通过上述电路图,按下不同的按键K1、K2、K3会触发电路的不同报警方式:
为了使长鸣可控,可以加入一个按键K4,按下该按键K4可以使蜂鸣器停止长鸣。具体实现方法可以通过加一个开关电路,控制 NE555 供电来实现。
const int buzzerPin = 9; // 蜂鸣器连接的引脚
const int k1Pin = 2; // K1引脚
const int k2Pin = 3; // K2引脚
const int k3Pin = 4; // K3引脚
const int k4Pin = 5; // K4引脚
int alarmState = 0; // 报警状态,0表示无报警,1表示单短鸣,2表示三短鸣,3表示长鸣
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(k1Pin, INPUT_PULLUP);
pinMode(k2Pin, INPUT_PULLUP);
pinMode(k3Pin, INPUT_PULLUP);
pinMode(k4Pin, INPUT_PULLUP);
digitalWrite(buzzerPin, LOW);
}
void loop() {
// 判断是否按下K1
if (digitalRead(k1Pin) == LOW) {
alarmState = 1;
alarm();
}
// 判断是否按下K2
if (digitalRead(k2Pin) == LOW) {
alarmState = 2;
alarm();
delay(1000);
alarm();
delay(1000);
alarm();
}
// 判断是否按下K3
if (digitalRead(k3Pin) == LOW) {
alarmState = 3;
while (digitalRead(k4Pin) == HIGH) {
alarm();
delay(200);
}
alarmState = 0;
}
}
// 报警函数
void alarm() {
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
delay(500);
}