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

news2025/1/10 2:46:01

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)即可关闭蜂鸣器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解Handler

详解Handler 文章目录 详解Handler1.Handler的工作流程1.1主线程具有如上性质的原因1.2流程图 2.Handler流程中的重要的几个方法2.1Message中的属性2.2.1what2.2.2replyTo2.2.3obtain 2.2Handler.post()与Handler.sendMessage()2.2.1post的源码2.2.1.1sendMessageDelayed()源码…

centos6离线安装docker

参考 RedHat 6.8 离线安装Docker (rpm包安装) - 神奇二进制 - 博客园 (cnblogs.com) 可参考,但本次安装未参考 CentOS6 完全离线安装Docker - 简书 (jianshu.com) 走了一遍,大雾 (1条消息) 离线安装Docker_洒家肉山大魔王的博客…

萌啦科技参加ICBE跨境电商博览会完美落幕,期待再相会!

“ 萌啦科技联合DNY123、喜运达物流共同亮相2023 ICBE跨境电商博览会,更全面地服务东南亚电商卖家,把握新兴市场电商发展商机!” 跨境电商“万人”博览会 5月15日-5月17日,ICBE国际跨境电商交易博览会在广州琶洲保利世贸博览馆隆重…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.3密码测评要求与测评方法

总体要求测评方法 1.密码算法核查 测评人员应当首先了解信息系统使用的算法名称、用途、位置、执行算法的设备及其实现方式(软件、硬件或固件等)。针对信息系统使用的每个密码算法,测评人员应当核查密码算法是否以国家标准或行业标准形式发布…

数据结构与算法-二分查找

1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …

IO读写的基础原理

read系统调用write系统调用read系统调用,并不是直接从物理设备把数据读取到内存中,write系统调用,也不是直接把数据写入到物理设备。调用操作系统的read,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用&#x…

健康医疗类APP开发 满足民众在线医疗需求

生活水平和社会大环境的变化让人们对于医疗服务的要求也随之提高,传统的到医院就诊已经无法更好的满足现代人多元化的医疗服务需求了。于是很多医院诊所等都考虑通过互联网技术来实现诊疗和科普健康知识的目的,为用户提供更加便捷化多元化的健康诊疗服务…

Python魔法属性和方法

1.魔法属性 __doc__ 获取类或方法的描述信息 class Foo:""" 类对象__doc__的属性值"""def func(self):""" 类方法的__doc__属性值 """passfoo Foo()print("类对象的__doc__:", Foo.__do…

电力需求侧管理是什么及意义

安科瑞虞佳豪 电力需求侧管理是指综合采取合理可行的技术、经济和管理措施,在用电环节实施需求响应、节约用电、电能替代、绿色用电、智能用电、有序用电,推动电力系统安全降碳、提效降耗。 我国分别于2010年和2017年发布了两版电力需求侧管理办法。国…

元”启长三角 共享新未来!长三角数字干线元宇宙创新发展论坛暨第一届长三角元宇宙日在长三角绿洲智谷·赵巷成功举办

5月30日下午,由工信部网络安全产业发展中心(工信部信息中心)、长三角投资(上海)有限公司、青浦区经济委员会、青浦区科学技术委员会、青浦区科学技术协会指导,北京大数据协会元宇宙专委会主办,长…

ISO21434 项目网络安全管理(三)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 4.1 网络安全责任 4.2 网络安全规划 4.3 裁剪 4.4 重用 4.5 非上下文组件 4.6 现成组件 4.7 网络安全案例(Cybersecurity case) 4.8 网络安全评估&#…

网店系统如何建设?如何搭建网店?

互联网的不断发展,越来越多的商家开始意识到建设自己的网店是非常必要和重要的。通过搭建网店系统,商家无需承担大量的租赁、装修等成本,同时可以将商品推广到更广阔的市场,提高销售额。那么,网店系统如何建设呢&#…

[QCA6174]QCA6174 DFS认证4.6.2.3 Channel Shutdown出现跳转之后在原始信道上有弱信号问题分析及解决方案

WIFI DFS测试要求 Master设备需要测试的项目 4.6.2.1 Channel Availability Check ---信道可用性检查 定义其作为雷达脉冲检测机制,当雷达脉冲出现时所占用的信道需要能被设备检测到已经被占用。当相关信道未被占用时,这些信道被称为Avaliable Channel可用信道 4.6.2.2 In…

【TA 100】Flow Map实现水体流动效果

最近刚好学到Shader Graph水体流动,看下其他实现方式记录下 1 什么是flow map 1 什么是Flow map? flowmap的实质:一张记录了2D向量信息的纹理Flow map上的颜色(通常为RG通道) 记录该处向量场的方向,让模型上某一点表现出定量流动的特征。通过在shader中…

Python接口自动化—接口测试用例和接口测试报告模板

简介 当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上…

vue高频面试题(一)

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 VUE Vue2和3对比 脚手架创建项目 之前有个国企,问到了怎么用脚手架创建vue项…

真空热压烧结炉JZM-1200技术参数一览表

真空热压烧结炉是将真空、气氛、热压成型、高温烧结结合在一起设备,适用于粉末冶金、功能陶瓷等新材料的高温热成型。如应用于透明陶瓷、工业陶瓷等金属以及由难容金属组成的合金材料的真空烧结以及陶瓷材料碳化硅和氮化硅的高温烧结,也可用于粉末和压坯…

2. 量化多因子数据清洗——去极值、标准化、正交化、中性化

一、去极值 1. MAD MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法. def extreme_MAD(rawdata, n): median rawdata.quantile(0.5) # 找出中位数 new_median (abs(…

Mybatais-plus超详细教程

文章目录 前言什么是Mybatis-plus特性引入依赖配置日志Service CRUD 接口SaveSaveOrUpdateRemoveUpdateGetListPageCount Chainqueryupdate Mapper CRUD 接口InsertDeleteUpdateSelect 赠送 前言 在学习Mybatis-plus之前,这里默认大家都已经对mybatis使用有了一定的…

召回评价指标NDCG、MAP

【MAP】 1、AP A P ∑ i 1 n r e l ( i ) p i AP \sum_{i1}^{n}\frac{rel(i)}{p_i} APi1∑n​pi​rel(i)​ 其中 n 表示候选序列长度, p i p_i pi​表示第 i 个 item 的位置 本质是对每个位置item的分数加一个基于位置的筛选.简单粗暴,直接除以位置…