第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向

这篇具有很好参考价值的文章主要介绍了第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、结果

说明:有源蜂鸣器按照一定的频率报警,无源蜂鸣器则是一直报警,都采用非阻塞方式编写,如果是你想要的,可以接着往下看。

1、外观

说明:有源蜂鸣器和无源蜂鸣器看上去一样,但是背面不一样,第一张图是有源蜂鸣器,第二张图是无源蜂鸣器。也有三个引脚的,其实都是一样的。

2、连线

说明:只需要连接两根线或三根线。

  • uno————两个引脚的蜂鸣器
  •     7--------------正极
  • GND--------------负极
     
  • uno————三个引脚的蜂鸣器
  •     5V--------------VCC
  • GND--------------GND
  •       7--------------I/O 

3、源程序

说明:采用非阻塞方式编写,一定时间驱动蜂鸣器,并将对应功能进行函数化,方便移植。

有源蜂鸣器程序:


/*
  注意:低电平触发,给低电平就有声音,高电平没有声音,一定的工作频率
*/
/****************************************有源beep part****************************************/
#define beepPin 7                             //初始划蜂鸣器引脚
#define beepTimeInterval 1000                 //检测一次的时间间隔   
unsigned long beepTimes = 0;                  //记录设备运行时间
int beepCount = 0;                            //定义一个变量
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                         //设置串口波特率为9600
  pinMode(beepPin, OUTPUT);                   //蜂鸣器引脚设置成输出模式
  Serial.println("设备上线!");                 //串口打印对应的值
}
void loop() {
  ControlBeep();                              //控制蜂鸣器工作
}
/****************************************有源beep part****************************************/
/*控制蜂鸣器工作*/
void ControlBeep() {
  if (millis() - beepTimes >= beepTimeInterval) {
    beepTimes = millis();                    //一定时间执行一次
    beepCount++;
    if (beepCount % 2 == 1) {
      Serial.println("蜂鸣器打开!");
      digitalWrite(beepPin, LOW);            // 蜂鸣器工作
    } else {
      beepCount = 0;
      Serial.println("蜂鸣器关闭!");
      digitalWrite(beepPin, HIGH);          // 蜂鸣器停止工作
    }
  }
}

无源蜂鸣器程序:

/****************************************无源beep part****************************************/
/*
  注意:无源蜂鸣器,需要一定的频率才能工作。
  接线:
  VCC------正极
  GND------负极
*/
#define buzzer 7                                  //初始划蜂鸣器引脚
#define beepTimeInterval 5                        //检测一次的时间间隔   
unsigned long beepTimes = 0;                      //记录设备运行时间
int beepCount = 0;                                //定义一个变量
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                             //设置串口波特率为9600
  pinMode(buzzer, OUTPUT);                        //蜂鸣器引脚设置成输出模式
  Serial.println("设备上线!");                     //串口打印对应的值
}
void loop() {
  ControlBeep();                                  //控制蜂鸣器工作
}
/****************************************无源beep part****************************************/
/*控制蜂鸣器工作*/
void ControlBeep() {
  if (millis() - beepTimes >= beepTimeInterval) {
    beepTimes = millis();                         //一定时间执行一次

    digitalWrite(buzzer, HIGH);                   // 蜂鸣器工作
    delay(1);
    digitalWrite(buzzer, LOW);
    delay(1);          
  }
}

4、注意事项

说明:有源蜂鸣器工作比较简单,因为内部有震荡源,所以只需要给一个高电平或者低电平就可以发出声音;无缘蜂鸣器因为没有震荡源,所以需要外部给一定频率的高低电平才能发出声音。

5、基本原理

有源蜂鸣器:
        有源蜂鸣器通常包括一个振荡器、放大器、以及共振腔等元件。与无源蜂鸣器不同的是,有源蜂鸣器内置驱动电路,可以直接通过DC电源进行驱动,无需外接交流信号。在Arduino中,有源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。
        Arduino中的有源蜂鸣器通常需要外接一个可调节直流电源,如5V,用于驱动内部驱动电路。与无源蜂鸣器不同的是,在控制蜂鸣器时,将引脚输出设置为低电平(0V)即可打开蜂鸣器,将引脚输出设置为高电平(5V)即可关闭蜂鸣器。
无源蜂鸣器:
        无源蜂鸣器通常由一个压电陶瓷薄片、振荡电路以及共振腔组成。在Arduino中,无源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。
        Arduino中的无源蜂鸣器需要外接一个交流信号,利用交流电信号来驱动压电陶瓷薄片产生声音。在控制蜂鸣器时,将引脚输出设置为高电平(5V)即可打开蜂鸣器,将引脚输出设置为低电平(0V)即可关闭蜂鸣器。文章来源地址https://www.toymoban.com/news/detail-468836.html

到了这里,关于第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python入门系列】第二十一篇:Python物联网和传感器应用

    物联网和传感器在现代科技中扮演着重要的角色。物联网是指通过互联网连接各种设备和传感器,实现设备之间的通信和数据交换。传感器则是物联网的核心组成部分,用于感知和采集环境中的各种数据。在这篇文章中,我们将探讨使用Python开发物联网和传感器应用的主题。

    2024年02月15日
    浏览(65)
  • arduino uno+驱动器控制42步进电机

    1.步进电机工作原理 步进电机通过不停的变换通电线圈和线圈的通电方向进行旋转,每次变换使步进电机转子转动1.8°。如图所示,这里采用的是两相四线步进电机,所有的转动都由以下四个步骤构成 2.arduino+驱动器+步进电机,接线示意图 3.编写arduino程序

    2024年02月13日
    浏览(37)
  • 【物联网】Arduino Uno开发板连接阿里云实现云端远程控制LED灯开关

    1 思维图概览 需要实现的有 ESP8266通过wifi与阿里云进行通信 ESP8266与Arduino Uno开发板的通信 Arduino Uno开发板与LED灯的通信 2 阿里云—ESP8266 部分 参考昨天的文章 【阿里云】物联网平台配置ESP8266真实设备AT串口连接,支持MQTT协议通信 https://blog.csdn.net/qq_33957603/article/details/124575

    2024年02月03日
    浏览(56)
  • arduino UNO通过AT指令控制esp8266连接WiFi及onenet云平台

    写下这篇文章是为了记录我学习使用esp8266的过程。在本文中我们会使用AT指令通过MQTT协议连接onenet云平台 1)关于onenet MQTT设备创建 在设备连接onenet平台中,你又几个设备onenet就需要添加几个设备,就比如我有一个arduino端,一个QT端,还有一个测试端需要连接同一个onenet MQ

    2024年02月01日
    浏览(45)
  • 基于Arduino Uno开发板制作音乐播放器

    1.Arduino开发板 Arduino Uno 是一款基于 Microchip ATmega328P 微控制器的开源微控制器板,由 Arduino.cc 开发,最初于 2010 年发布。该板配备了一组数字和模拟输入/输出 (I/O) 引脚,可以连接到各种扩展板(屏蔽)和其他电路。 该板具有 14 个数字 I/O 引脚(6 个能够进行 PWM 输出)、6 个

    2024年02月16日
    浏览(46)
  • 第二十一章 Classes

    类定义并不是 ObjectScript 的正式组成部分。相反,可以在类定义的特定部分中使用 ObjectScript (特别是在方法定义中,可以在其中使用其他实现语言)。 每个 IRIS 类都有一个名称,该名称在定义它的命名空间中必须是唯一的。完整的类名是由一个或多个句点分隔的字符串,如

    2024年02月09日
    浏览(37)
  • 第二十一章

    计算机应用实现了多台计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据。编写网络应用程序前,首先必须明确所要使用的网络协议。TCP/IP协议是网络应用程序的

    2024年02月04日
    浏览(51)
  • 第二十一章 Unity 光源

    光源是每个场景必不可少的部分,光源除了能够照亮场景之外,还可以产生阴影效果。 Unity中分为四种 光源类型 : 1. 方向光:Directional Light 用于模拟太阳光,方向光任何地方都能照射到。 2. 点光源:Point Light 用于模拟电灯泡的照射效果。 3. 聚光灯:Spot Light 用于模拟聚光灯

    2024年02月16日
    浏览(46)
  • 第二十一章网络通信

    网络程序设计基础 局域网与互联网 为了实现两台计算机的通信,必须用一个网络线路连接两台计算机。如下图所示  网络协议 1.IP协议 IP是Internet Protocol的简称,是一种网络协议。Internet 网络采用的协议是TCP/IP协议,其全称是Transmission Control Protocol/Internet Protocol。Internet 依靠

    2024年02月05日
    浏览(37)
  • 基于Arduino UNO的智能自主避障小车和蓝牙遥控小车

           Hello,大家好!今天我要给大家分享我近期制作的一个arduino小项目----智能避障小车。之前在某站上无意间刷到某位博主制作的一款智能避障小车,觉得很有意思,便打算自己也做一个来玩玩,于是便制作了一款我自己理解的避障小车。在此基础上,我还增加了蓝牙遥控

    2024年02月01日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包