做了之前的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实验–有源蜂鸣器报警相关推荐

  1. arduino电风扇程序_Arduino实验项目:温控电风扇

    这个实验是用Arduino控制电风扇的工作,当气温达到某一设定值它打开风扇为你送来凉风:气温下降以后就停止工作,避免你受凉.在实验中我们可以学会读取模拟量输入值的函数analogRead()使用方法. ...

  2. arduino 有源 蜂鸣器_穷创客教育之Arduino编程第十课:蜂鸣器电子琴

    欢迎注册,加入沙洋社区-我们的网上家园! 您需要 登录 才可以下载或查看,没有帐号?注册 x 穷创客教育之Arduino编程第十课:蜂鸣器电子琴 蜂鸣器又分为有源蜂鸣器和无源蜂鸣器两种,无源蜂鸣器的电 ...

  3. 【Arduino基础】蜂鸣器发声实验

    实验现象 使用arduino直接驱动蜂鸣器发出不同频率的声音. 理论学习 小型蜂鸣器因其体积小(直径只有 6mm).重量轻.价格低.结构牢靠,而广泛地应用在各种需要发声的电器设备.电子制作和单片机等电 ...

  4. 有源蜂鸣器和无源蜂鸣器的区别_电磁式蜂鸣器和压电式蜂鸣器的区别以及驱动方法...

    蜂鸣器是设计电子产品时比较常用的发声元器件,根据工作原理的不同,可以分为电磁式蜂鸣器和压电式蜂鸣器.在开发板.实验板上常用的蜂鸣器为电磁式蜂鸣器.这两者最大的区别在于工作原理.下面详细介绍其工作原理. ...

  5. ARM(IMX6U)裸机C语言蜂鸣器驱动实验(BSP+SDK)

    参考:Linux之ARM(IMX6U)裸机C语言蜂鸣器驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-16 14:47:23 网址:https://blog.csdn.net/ ...

  6. Arduino ESP32通过PWM控制无源蜂鸣器

    Arduino ESP32通过PWM控制无源蜂鸣器 相关篇<ESP32在Arduino开发环境中的PWM的使用方法> ESP32通过PWM控制无源蜂鸣器发出声音. 有源和无源蜂鸣器知识科普 ...

  7. Ardino基础教程 7_蜂鸣器发声实验

    实验七:蜂鸣器发声 用Arduino 可以完成的互动作品有很多,最常见也最常用的就是声光展示了,前面一直都是在用LED 小灯在做实验,本个实验就让大家的电路发出声音,能够发出声音的最常见的元器件就是蜂 ...

  8. 【微处理器与嵌入式】实验2——蜂鸣器+流水灯 汇编

    [微处理器与嵌入式]实验2--蜂鸣器+流水灯 汇编 1.流水灯 ORG 0000HAJMP MAINORG 0030H MAIN: MOV A,#0FEH;LOOP: CLR P1.0;ACALL D ...

  9. linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...

    摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...

  10. 电磁式蜂鸣器和压电式蜂鸣器有什么区别?驱动方法一样吗?

    计算公式 https://blog.csdn.net/xsbh0310/article/details/50546987 蜂鸣器有电磁式和压电式两种 蜂鸣器是一种常见的发声元器件,广泛应用于各种电子产 ...

最新文章

  1. python基础系列:类
  2. vim比vi做的一些改进
  3. AV1编码时间下降,接近使用水平
  4. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
  5. JS_15作用域与作用域链
  6. linux 设备驱动总结,linux设备驱动归纳总结(三):3面向对象思想和lseek
  7. java 中传输文件的代码_java文件上传Demo(必看篇)
  8. TEM014 - 新版阿里云网站界面高保真原型模板-AxureUX
  9. 方舟官方服务器怎么显示血量,方舟端游怎么显示血量
  10. 微信小程序 java网上购物商城系统
  11. C语言结构体所占用的字节数如何计算
  12. 专属于程序员的理财建议,抱走不谢
  13. 微信小程序 —— 自定义picker选择器弹窗内容
  14. C++矩阵之岛屿的最大面积
  15. python ln()怎么实现_python循序渐进_python简介
  16. JS原生---歌词滚动效果案例
  17. 【python】如何画简单的图
  18. Win10 WSL2 linux 子系统安装Docker
  19. 怎么开启微信蓝牙服务器,微信加群,电脑蓝牙怎么打开,教你一个最简单的方法...
  20. springboot项目打jar包跳过单元测试test

热门文章

  1. centos下编译abseil-cpp
  2. linux管道操作命令,Linux中可用于管道操作的命令总结
  3. UU加速器——学术资源加速
  4. pyqt:使用qrc文件配置图片资源,生成py文件
  5. 高等数学微积分公式大全
  6. Python2.7利用xpath爬取韩寒博客(多线程版)
  7. 一键清理电脑垃圾小程序
  8. 新版电力系统决策支持系统开发告一段落
  9. AppFabric 1.1: installation error 错误代码 1603 windows server 2016 sharepoint 2019 Preparation Tool
  10. 调研分析:全球与中国汽车后置摄像头模组市场现状及未来发展趋势