ArduinoUNO实战-第五章-有源蜂鸣器实验

理论学习

有源蜂鸣器和无源蜂鸣器的区别

  • 1、有无震荡源,有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K-5K的方波去驱动它。

  • 2、价格不同,有源蜂鸣器要比无源蜂鸣器贵,贵在里面多了震荡源。

  • 3、两者其高度不同,有源蜂鸣器高度为9mm,而无源蜂鸣器高度为8mm。

  • 4、优点不同,无源蜂鸣器的优点是:便宜,声音频率可控,可以做出多来米发索拉西的效果,在一些特例中,可以和LED复用一个控制口。有源蜂鸣器的优点是:程序控制方便。

注意:这里的“源”不是指电源,而是指震荡源

有源蜂鸣器

两线制

在这里插入图片描述

三线制

  • 1.VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)
  • 2.GND 外接GND
  • 3.I/O 外接单片机IO口

无源蜂鸣器

在这里插入图片描述

功能概述

没按下一次按键,蜂鸣器嘀一声。

如果想让有源蜂鸣器声音大一点,可以撕开蜂鸣器上的贴纸。

线路图

如果接入了一个有源蜂鸣器
在这里插入图片描述

  • 红色表示正,黑色表示负,红色我们接入到3号IO上,黑色接入到地线GND,GND地线也可以接到跟按键一起
  • 每按一次按键,我们让led点亮熄灭,同时让蜂鸣器嘀一声

在这里插入图片描述

IDE

/*
  测试按键控制led
*/

// 这就是定义的带汉字的专用文件,可以写多个数组哦,这里仅举例
#include "i18n.c"


// led的输出13号引脚
#define LED 13
// 按键输入上拉2号引脚
#define KEY 2
// 定义一个蜂鸣器3号引脚
#define BUZZER 3

// 判断按键按下的标记位,按下时为1
int KEY_NUM = 0;

// the setup function runs once when you press reset or power the board
void setup() {
  // 打开串口
  Serial.begin(9600);
  // LED设置为输出
  pinMode(LED, OUTPUT);
  // KEY设置为输入
  //pinMode(KEY, INPUT);
  // 设置KEY使能上拉电阻
  pinMode(KEY, INPUT_PULLUP);
  // 蜂鸣器BUZZER设置为输出
  pinMode(BUZZER, OUTPUT);
  // 初始化蜂鸣器不响
  digitalWrite(BUZZER, LOW);
}

// the loop function runs over and over again forever
void loop() {
  ScanKey();
  if(KEY_NUM == 1)
  {
    Serial.println(cn[0]);
    // 让LED电平翻转
    digitalWrite(LED, !digitalRead(LED));
    // 让蜂鸣器响
    BuzzerDi();
  }
}

void ScanKey()
{
  // 重置标记位
  KEY_NUM = 0;
  // 判断按键是否按下,是否输入低电平
  if(digitalRead(KEY) == LOW)
  {
    // 为了电波抖动,延时20ms
    delay(20);
    // 重新读取
    if(digitalRead(KEY) == LOW)
    {
      // 说明按键按下
      KEY_NUM = 1;
      // 避免led一直在闪,所以循环等待按键松开
      while(digitalRead(KEY) == LOW);
      
    }
  }
}

void BuzzerDi()
{
  // 让蜂鸣器响
  digitalWrite(BUZZER, HIGH);  
  // 延时20ms之后停止响
  delay(20);
  digitalWrite(BUZZER, LOW);   
}

  • 先定义3号引脚为BUZZER
  • 初始化BUZZER为输出,并且是低电平
  • 在led切换的时候输出高电平,并且延时20ms,然后停止鸣叫
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值