arduino 有源 蜂鸣器_arduino实验–有源蜂鸣器报警
做了之前的LED的实验,是不是感觉很无聊,接下来我们做一个有源蜂鸣器的报警器。
需要元器件:
有源蜂鸣器:
电路图:
因为模拟电路里面跟实际的有源蜂鸣器有区别,线路图如下(注意正负极哦):
输入代码如下:
float sinVal;
int toneVal;
int pin = 8; //定义引脚
void setup() {
pinMode(pin, OUTPUT);
}
void loop() {
for (int x = 0; x<180; x++) {
//当使用sin函数时,角度转换成弧度
sinVal = (sin(x*(3.1412 / 180)));
// 用sin函数值产生声音频率
toneVal = 2000+ (int(sinVal * 1000));
tone(pin, toneVal);
delay(2);
}
}
代码解释
首先,定义两个变量:
float sinVal;
int toneVal;
sinVal浮点变量存储正弦值,是声音产生高低变化。toneVal从sinVal变量中获得数值,并把它转换成所需要的频率。
在主循环中设置一个从0到179的for循环,保证正弦值不会产生赋值。之后,将这个值转变成报警声音的频率:
toneVal = 2000+ (int(sinVal * 1000));
之后,用tone()函数产生输出给有源蜂鸣器的频率:
tone(pin, toneVal);
tone()函数需要两个或三个参数,如下:
tone(pin, frequency)
tone(pin,frequency,duration)
pin是连接到有源蜂鸣器的数字引脚,frequency是以Hz为单位的频率值。这里只有一个可选的duration参数,它是以毫秒为单位的表示声音长度的参数。如果没有指定duration,声音将一直持续直到输出一个不同的声音或使用noTone(pin)函数结束在指定引脚上产生的声音。
最后,在频率变化的中间延时2ms,保证正弦波以需要的速度变化:
delay(2);
你可能有疑问,为什么不把2ms放在tone()函数的duration参数中,像下面这样:
tone(pin,toneVal,2);
这是因为for循环运行时间很短,它将在少于2ms的时间内改变频率值,因此使用duration参数是没有用的。所以,把延时2ms放在产生声音之后,保证这个声音在for循环重复并再次改变声音之前持续至少2ms。这里有点难以理解,但是动手试过之后就能明白其中的区别。
在这里,大家还可以改变toneVal计算中的2000和1000或延时时间,可以产生不同的报警声音。大家可以试试看哦。
arduino 有源 蜂鸣器_arduino实验–有源蜂鸣器报警相关推荐
- arduino电风扇程序_Arduino实验项目:温控电风扇
这个实验是用Arduino控制电风扇的工作,当气温达到某一设定值它打开风扇为你送来凉风:气温下降以后就停止工作,避免你受凉.在实验中我们可以学会读取模拟量输入值的函数analogRead()使用方法. ...
- arduino 有源 蜂鸣器_穷创客教育之Arduino编程第十课:蜂鸣器电子琴
欢迎注册,加入沙洋社区-我们的网上家园! 您需要 登录 才可以下载或查看,没有帐号?注册 x 穷创客教育之Arduino编程第十课:蜂鸣器电子琴 蜂鸣器又分为有源蜂鸣器和无源蜂鸣器两种,无源蜂鸣器的电 ...
- 【Arduino基础】蜂鸣器发声实验
实验现象 使用arduino直接驱动蜂鸣器发出不同频率的声音. 理论学习 小型蜂鸣器因其体积小(直径只有 6mm).重量轻.价格低.结构牢靠,而广泛地应用在各种需要发声的电器设备.电子制作和单片机等电 ...
- 有源蜂鸣器和无源蜂鸣器的区别_电磁式蜂鸣器和压电式蜂鸣器的区别以及驱动方法...
蜂鸣器是设计电子产品时比较常用的发声元器件,根据工作原理的不同,可以分为电磁式蜂鸣器和压电式蜂鸣器.在开发板.实验板上常用的蜂鸣器为电磁式蜂鸣器.这两者最大的区别在于工作原理.下面详细介绍其工作原理. ...
- ARM(IMX6U)裸机C语言蜂鸣器驱动实验(BSP+SDK)
参考:Linux之ARM(IMX6U)裸机C语言蜂鸣器驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-16 14:47:23 网址:https://blog.csdn.net/ ...
- Arduino ESP32通过PWM控制无源蜂鸣器
Arduino ESP32通过PWM控制无源蜂鸣器 相关篇<ESP32在Arduino开发环境中的PWM的使用方法> ESP32通过PWM控制无源蜂鸣器发出声音. 有源和无源蜂鸣器知识科普 ...
- Ardino基础教程 7_蜂鸣器发声实验
实验七:蜂鸣器发声 用Arduino 可以完成的互动作品有很多,最常见也最常用的就是声光展示了,前面一直都是在用LED 小灯在做实验,本个实验就让大家的电路发出声音,能够发出声音的最常见的元器件就是蜂 ...
- 【微处理器与嵌入式】实验2——蜂鸣器+流水灯 汇编
[微处理器与嵌入式]实验2--蜂鸣器+流水灯 汇编 1.流水灯 ORG 0000HAJMP MAINORG 0030H MAIN: MOV A,#0FEH;LOOP: CLR P1.0;ACALL D ...
- linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...
摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...
- 电磁式蜂鸣器和压电式蜂鸣器有什么区别?驱动方法一样吗?
计算公式 https://blog.csdn.net/xsbh0310/article/details/50546987 蜂鸣器有电磁式和压电式两种 蜂鸣器是一种常见的发声元器件,广泛应用于各种电子产 ...
最新文章
- python基础系列:类
- vim比vi做的一些改进
- AV1编码时间下降,接近使用水平
- python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
- JS_15作用域与作用域链
- linux 设备驱动总结,linux设备驱动归纳总结(三):3面向对象思想和lseek
- java 中传输文件的代码_java文件上传Demo(必看篇)
- TEM014 - 新版阿里云网站界面高保真原型模板-AxureUX
- 方舟官方服务器怎么显示血量,方舟端游怎么显示血量
- 微信小程序 java网上购物商城系统
- C语言结构体所占用的字节数如何计算
- 专属于程序员的理财建议,抱走不谢
- 微信小程序 —— 自定义picker选择器弹窗内容
- C++矩阵之岛屿的最大面积
- python ln()怎么实现_python循序渐进_python简介
- JS原生---歌词滚动效果案例
- 【python】如何画简单的图
- Win10 WSL2 linux 子系统安装Docker
- 怎么开启微信蓝牙服务器,微信加群,电脑蓝牙怎么打开,教你一个最简单的方法...
- springboot项目打jar包跳过单元测试test
热门文章
- centos下编译abseil-cpp
- linux管道操作命令,Linux中可用于管道操作的命令总结
- UU加速器——学术资源加速
- pyqt:使用qrc文件配置图片资源,生成py文件
- 高等数学微积分公式大全
- Python2.7利用xpath爬取韩寒博客(多线程版)
- 一键清理电脑垃圾小程序
- 新版电力系统决策支持系统开发告一段落
- AppFabric 1.1: installation error 错误代码 1603 windows server 2016 sharepoint 2019 Preparation Tool
- 调研分析:全球与中国汽车后置摄像头模组市场现状及未来发展趋势