迷你强 发表于 2012-6-14 11:42:04

Arduino入门教程--第八课--用蜂鸣器模拟警报器

玩了好久的LED了,今天开始,我们玩点新鲜的东西,今天我们来玩蜂鸣器,当然我光用蜂鸣器听个响大家肯定不答应,所以玩个比较简单,但稍微高端一点的,做一个防控警报类似的报警器。

实验用元器件列表


ocrobot mango控制板(Arduino兼容) 一块
面包板一块
面包板专用跳线一盒
无源蜂鸣器一个
USB数据线一根









我们来看电路图,电路图非常简单,就是一个蜂鸣器和arduino兼容板还有就是两根跳线,请注意,蜂鸣器一定要是无源蜂鸣器,市面上还有一种有源的蜂鸣器,这种用来做我们的实验是不行的。这点请大家注意。




然后我们根据所绘制的电路连接图搭建我们的电路



大家有没有发现,这个蜂鸣器标明了极性,无源蜂鸣器其实是无极性的,有源蜂鸣器才有极性,但是为了生产的节约成本统一采用了有源蜂鸣器的封装,所以上图我们接反了无需惊讶。

具体的关于成本节约有关的内容可以参考《魔鬼经济学》,一本非常不错的经济学的简单轻松的读本。

然后,我们来下载程序

/*
作者:极客工坊-迷你强
时间:2012年6月13日
IDE版本号:1.0.1
发布地址:www.geek-workshop.com
作用:使用tone()函数产生声音,模拟防控警报的响声

*/
void setup()
{
}

void loop()
{
for(int i=200;i<=800;i++)                  //用循环的方式将频率从200HZ 增加到800HZ
{
pinMode(4,OUTPUT);
tone(4,i);                            //在四号端口输出频率
delay(5);                              //该频率维持5毫秒   
}
delay(4000);                            //最高频率下维持4秒钟
for(int i=800;i>=200;i--)
{
pinMode(4,OUTPUT);
tone(4,i);
delay(10);
}
}
今天我们使用了一个新的函数 tone(),他的具体使用方法请参阅arduino语法手册的tone()

以下是演示视频:

http://player.youku.com/player.php/sid/XNDEzMTQ4NzM2/v.swf


==========分割线 下面为扩展阅读==========

本次实验所用到的语法请点击关键字进入极客工坊WIKI查看,词条内容在WIKI中不定期更新。
void
setup()
loop()
pinMode()
int
<=
>=
++
--
delay()
tone()


用arduino+蜂鸣器(喇叭)可以播放这种简单的声响,也是可以播放音乐的,如果您想了解如何播放音乐,请参考这篇文章:
http://www.geek-workshop.com/thread-288-1-1.html

Randy 发表于 2012-6-14 17:16:03

函数 tone() 我还没用过这个函数,呵呵!

Uduse 发表于 2012-7-26 16:54:13

为什么初始化时用的 pinMode 需要放进 loop的主函数里?
和直接放在setup里有区别么?

迷你强 发表于 2012-7-26 17:07:22

Uduse 发表于 2012-7-26 16:54 static/image/common/back.gif
为什么初始化时用的 pinMode 需要放进 loop的主函数里?
和直接放在setup里有区别么?

没区别,当时我写程序时准备要关闭OUTPUT状态的,后来将那个去掉了。程序就没修改了。。。

Uduse 发表于 2012-7-26 17:23:36

迷你强 发表于 2012-7-26 17:07 static/image/common/back.gif
没区别,当时我写程序时准备要关闭OUTPUT状态的,后来将那个去掉了。程序就没修改了。。。

嗯...多谢~

pierre 发表于 2012-7-27 11:09:58

我被偷的掉前轮和车坐的自行车在刚修好的一周内,终于离开了我。小偷呀。。。这个报警器也许能震慑下。

乐_乐(顺) 发表于 2012-7-27 16:47:26

小强哥,关于pinMode (4,OUTPUT)这条程序,是否可以放在setup()下的大括号内呢?

迷你强 发表于 2012-7-27 16:58:58

乐_乐(顺) 发表于 2012-7-27 16:47 static/image/common/back.gif
小强哥,关于pinMode (4,OUTPUT)这条程序,是否可以放在setup()下的大括号内呢?

可以,最好自己尝试

乐_乐(顺) 发表于 2012-7-27 17:08:33

迷你强 发表于 2012-7-27 16:58 static/image/common/back.gif
可以,最好自己尝试

这个实验搞不了了,蜂鸣器不牢,坏了。。。分尸了呵呵!

迷你强 发表于 2012-7-27 22:52:18

乐_乐(顺) 发表于 2012-7-27 17:08 static/image/common/back.gif
这个实验搞不了了,蜂鸣器不牢,坏了。。。分尸了呵呵!

{:3_50:}...........额,囧。。。。进过重新检查,可能遇到次品了,胶水牢靠度不行。。。。如果下次购买东西,给您补发,到时候说一下。。。。


暂时找个小喇叭代替也可以

乐_乐(顺) 发表于 2012-7-28 19:46:38

没事,下载买其他东西你给寄吧,哈哈~~给你省点邮费

星夜幻 发表于 2012-9-8 19:35:17

不知道是不是蜂鸣器有区别,我从家里翻出来的,反接是不响的。

迷你强 发表于 2012-9-8 23:00:25

星夜幻 发表于 2012-9-8 19:35 static/image/common/back.gif
不知道是不是蜂鸣器有区别,我从家里翻出来的,反接是不响的。

有源蜂鸣器是有极性的

939670129 发表于 2012-9-19 19:28:57

好东西,顶!

linhaimi 发表于 2012-10-30 22:58:30

这个例程 Leonardo @ 1.01 不能正常执行, 1.01 换装 1.5 的Core库后能正常执行,推测tone函数的问题。
页: [1] 2 3 4
查看完整版本: Arduino入门教程--第八课--用蜂鸣器模拟警报器