极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 41383|回复: 26

ATMega8最小系统和蜂鸣器做音乐盒

[复制链接]
发表于 2012-7-27 22:50:00 | 显示全部楼层 |阅读模式
本帖最后由 lonewolf 于 2012-8-3 16:51 编辑

材料:
atmega8, 28pin芯片底座,16M晶振,22pf电容X2,蜂鸣器,cr2032电池,cr2032电池底座,一位拨码开关,洞洞板。

接线:
按照atmega8最小系统接线,数字口只引出一个连接蜂鸣器就可以了,其他的都不用接。我用的是2号数字口。

不会画电路图,上一张实物图凑合看吧。



用途:
听音乐?

优点:
体积小

缺点:
电池续航时间短,声音有点小。

代码内容:
循环播放生日快乐歌


用到的库:
http://rogue-code.googlecode.com/files/Arduino-Library-Tone.zip

代码:
  1. #include <Tone.h>

  2. int speakerPin = 2;
  3. Tone makeTone;

  4. // notes to play; see Tone.h for frequencies;
  5. int notes[] = {
  6.   NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
  7.   NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
  8.   NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4,
  9.   NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4};

  10. // number of beats for each note
  11. int beats[] = {
  12.   1, 1, 2, 2, 2, 4,
  13.   1, 1, 2, 2, 2, 4,
  14.   1, 1, 2, 2, 2, 2, 2,
  15.   1, 1, 2, 2, 2, 4};

  16. // Calculate song length
  17. int songLength = sizeof(notes) / sizeof(int);
  18. int tempo = 220; // in milliseconds

  19. void playNote(int note, int beat){
  20.   makeTone.stop(); // speaker reset
  21.   makeTone.play(note); // play tone
  22.   delay(tempo * beat); // for specified number of beats
  23.   makeTone.stop(); // speaker reset
  24.   delay(tempo / 4); // pause between notes
  25. }

  26. void setup() {
  27.   makeTone.begin(speakerPin); // set up piezo speaker
  28. }

  29. void loop() {
  30.   for (int i = 0; i < songLength; i++) {
  31.     playNote(notes[i], beats[i]); // make sound
  32.   }
  33. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-7-27 23:06:33 | 显示全部楼层
这个音乐贺卡不错。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-27 23:20:41 | 显示全部楼层
迷你强 发表于 2012-7-27 23:06
这个音乐贺卡不错。。

明天就送人了
回复 支持 反对

使用道具 举报

发表于 2012-7-28 08:20:09 | 显示全部楼层
{:soso_e103:}送给MM的定情信物?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-28 08:43:06 | 显示全部楼层
弘毅 发表于 2012-7-28 08:20
送给MM的定情信物?

寒碜了点吧?生日礼物。。。
回复 支持 反对

使用道具 举报

发表于 2012-7-28 09:32:56 | 显示全部楼层
不寒碜,我觉得加上外包装好一点的话,决定是精品啊!{:soso_e102:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-28 10:06:22 | 显示全部楼层
Randy 发表于 2012-7-28 09:32
不寒碜,我觉得加上外包装好一点的话,决定是精品啊!

那你是没看到背面,焊得稀烂。。。
回复 支持 反对

使用道具 举报

发表于 2012-7-28 10:10:28 | 显示全部楼层
lonewolf 发表于 2012-7-28 10:06
那你是没看到背面,焊得稀烂。。。

所以说要包装起来呀,不给她拆就OK 了,哈哈!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-28 10:23:51 | 显示全部楼层
Randy 发表于 2012-7-28 10:10
所以说要包装起来呀,不给她拆就OK 了,哈哈!

太麻烦了。
就这样了,做着玩儿的,不用那么认真。
裸露着比较有科技感。哈哈哈~~~
回复 支持 反对

使用道具 举报

发表于 2012-7-28 14:26:27 | 显示全部楼层
还是包一下的好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-28 22:48:36 | 显示全部楼层
davidce 发表于 2012-7-28 14:26
还是包一下的好

最后还是让花店小姑娘包了一下
回复 支持 反对

使用道具 举报

发表于 2012-7-30 13:53:31 | 显示全部楼层
伙计,你有点大材小用了arduino,买个《生日快乐》的音乐芯片才1-2元,体积比这个小多了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-30 16:40:03 | 显示全部楼层
acdc0616 发表于 2012-7-30 13:53
伙计,你有点大材小用了arduino,买个《生日快乐》的音乐芯片才1-2元,体积比这个小多了。

DIY玩得不就是折腾嘛,呵呵。
正好手头有这些材料,所有这样做。如果手头有你说的音乐芯片,可能就是另一种做法了。
回复 支持 反对

使用道具 举报

发表于 2012-8-1 03:09:14 | 显示全部楼层
这个有点意思哈~回头整一个玩玩~
回复 支持 反对

使用道具 举报

发表于 2012-8-3 13:19:33 | 显示全部楼层
我下了库函数,用的就是这段代码,但是编译的时候会出现这样的错误:sketch_aug03a:37: error: invalid conversion from 'int*' to 'int'
sketch_aug03a:37: error: initializing argument 2 of 'void playNote(int, int)'
,不知道是哪里出了问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 16:22 , Processed in 0.066932 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表