有源蜂鸣器实验

有源蜂鸣器实验

实验目的

每按键一次,蜂鸣器滴一次

理论学习

有源蜂鸣器和无源蜂鸣器的区别:
有源和无源的区别是指震荡源,通常有源蜂鸣器内部带有震荡源,所以只要一通电就会鸣叫一声,无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2k到5k的方波去驱动它

原理图

在这里插入图片描述
在这里插入图片描述

代码编写

int led = 13;
int key = 2;
int buzzer = 3;//有源蜂鸣器引脚定义
int key_num = 0;//按键值存放变量,不等于1说明有按键按下
void Scankey();//函数的声明
void buzzerdi();
void setup() {
    
    
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);//定义led为输出引脚
  pinMode(key,INPUT_PULLUP);//定义key为带上拉输入引脚
  pinMode(buzzer,OUTPUT);//将蜂鸣器设置为输出
  digitalWrite(buzzer,LOW);
}

void loop() {
    
    
  // put your main code here, to run repeatedly:
  Scankey();//按键扫描程序,当按键按下的时候,该程序会修改key_num的值
  if(key_num == 1){
    
    //是否按键按下
    digitalWrite(led,!digitalRead(led));//led的状态翻转
    }
}

void Scankey(){
    
    
  //按键扫描程序
  key_num = 0;//清空变量
  if(digitalRead(key) == LOW){
    
    //有按键按下
    delay(20);//延时去抖动
    if(digitalRead(key) == LOW){
    
    //有按键按下
      buzzerdi();
      key_num = 1;//将变量设置为1
      while(digitalRead(key) == LOW);//等待按键松手
      }
    }
  }
  void buzzerdi(){
    
    
   digitalWrite(buzzer,HIGH);
   delay(20);
   digitalWrite(buzzer,LOW);
}

猜你喜欢

转载自blog.csdn.net/qq_45671732/article/details/108903400