准备器件
有源蜂鸣器:1个
四角开关:1个
220欧电阻:1个
面包板:1个
杜邦线:6根
硬件连线
1、将蜂鸣器和四脚开关插入面包板中;
2、用一根杜邦线将蜂鸣器的正极接到8号引脚;
3、用一根杜邦线将蜂鸣器的负极接到带减号的横排插口;
4、用一根杜邦线将带减号的横排插口接到GND口;
5、用一根杜邦线将带加号的横排插口接到5V插口;
6、用电阻将开关的一端接到加号的横排插口;
7、用一根杜邦线将开关这端接到4号引脚;
8、用一根杜邦线将开关另一端接到带减号的横排插口。
软件程序
const int button_pin = 4; //开关引脚
const int buzzer_pin = 8; //蜂鸣器引脚
unsigned int fre; //蜂鸣器频率
int val;
void setup() {
//Serial.begin(9600);
pinMode(button_pin, INPUT);
pinMode(buzzer_pin, OUTPUT);
}
void loop() {
val = digitalRead(button_pin);
//Serial.println("检测开关");
if (val == LOW) {
//Serial.println("准备开始");
delay(1000);
BUZZER();
//Serial.println("结束");
}
tone(buzzer_pin, 0);
}
void BUZZER() {
while (1) {
for (fre = 200; fre <= 800; fre++) {
if (digitalRead(button_pin) == LOW){
//Serial.println("按下第二次1");
goto flag;
}
//Serial.println("响1");
tone(buzzer_pin, fre);
delay(5);
}
delay(4000);
//Serial.println("最高音");
for (fre = 800; fre >= 200; fre--) {
if (digitalRead(button_pin) == LOW){
//Serial.println("按下第二次2");
goto flag;
}
//Serial.println("响2");
tone(buzzer_pin, fre);
delay(10);
}
//delay(4000);
}
flag:
tone(buzzer_pin,0);
digitalWrite(buzzer_pin,LOW);
//Serial.println("蜂鸣器停止");
delay(1000);
}
成品展示视频
按下开关,蜂鸣器开始发出警报;再按一下开关,蜂鸣器停止。
【Arduino06】开关控制蜂鸣器实验成品演示
总结
通过本次实验,我熟悉了蜂鸣器的使用,并复习了开关的用法。在进行实验时,我常因为没有设置延时,导致判断过于迅速,影响程序的顺序。当一个量要进行多次判断时,最好加上延时。