电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>Sparkfun压电蜂鸣器光子屏蔽原型

Sparkfun压电蜂鸣器光子屏蔽原型

2023-01-05 | zip | 0.01 MB | 次下载 | 免费

资料介绍

描述

所以我在 Sparkfun 网站上阅读了关于在他们的网站上生产和销售你的小工具和小工具的能力。我真的很喜欢 Particle Photon,喜欢像 Sparkfun 这样的网站,因为它们鼓励创造力。 

输入利用 Particle 固件中的 tone() 功能的想法。一旦我看到它,我就知道我需要提高我在 EagleCad 中的技能,并学习一两件关于设计我的第一个 PCB 的事情。

尽管 Sparkfun 可能实际上不接受这篇文章作为提交,但我想与社区分享我的项目。

步骤 1. 设计 PCB

我使用 EagleCad 设计我的电路和 PCB。这个概念是,拿到这个防护罩的人可以轻松地将它与从 Sparkfun 购买的现有光子防护罩一起使用。

因此,如果您有一个电池保护罩,也许还有一个原型板,现在您想要轻松地将音乐融入您的项目中,您可以做到。

 
 
poYBAGO0F5uAInVNAAEHm7z5V4c040.png
 
1 / 2压电式蜂鸣器防护罩
 

因此,我进行了大量研究和修补,或多或少地复制了 Sparkfun 销售的现有防护罩的规格当我在做的时候,我尽可能地遵循了他们的提交指南。任何购买过 Sparkfun 的 Photons shield 的人都知道 D0 和 D1 是为 I2C 保留的。所以我放置了一些焊接跳线,让用户可以选择将蜂鸣器分配给哪个引脚。

在这一点上,我发现了一个名为 OSHPark 的服务。他们是最酷的 PCB 服务。在 EagleCad 中完成 PCB 设计后,我将 brd 文件上传到 OSHPark,然后等了不到三周就拿到了实际的 PCB。不到 11.00 美元就不错了!

我从他们那里订购了一些 12 针母头和一些 12 毫米压电蜂鸣器并将其焊接起来。

Step 2. 音乐时间

因此,起初我复制并粘贴了有关使用 tone() 的文档中的示例代码。果然一打开就发出了很酷很短的小曲子!

// EXAMPLE USAGE
// Plays a melody - Connect small speaker to analog pin A0
 
int speakerPin = A0;
 
// notes in the melody:
int melody[] = {
1908, 2551, 2551, 2273,
2551, 0, 2024, 1908
};  //C4,G3,G3,A3,G3,0,B3,C4
 
// note durations: 4 = quarter note, 8 = eighth note, etc.
int noteDurations[] = {
4, 8, 8, 4,
4, 4, 4, 4
};
 
void setup(){
 
// iterate over the notes of the melody:
for(int thisNote = 0; thisNote < 8; thisNote++){
 
 // to calculate the note duration, take one second
 // divided by the note type.
 //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
 int noteDuration = 1000/noteDurations[thisNote];
 tone(speakerPin, melody[thisNote], noteDuration);
 
 // to distinguish the notes, set a minimum time between them.
 // the note's duration + 30% seems to work well:
 int pauseBetweenNotes = noteDuration * 1.30;
 delay(pauseBetweenNotes);
 // stop the tone playing:
 noTone(speakerPin);
}
}

然后我想进一步发挥这个小项目的能力。所以我用谷歌搜索了 MarioBros 的音符,结果发现有人已经将它编码为可以在 Teensy 和 Arduino 上使用!所以我借用了代码并修改了它在 Photon 上的工作。 

抱歉,我找不到用于借用代码的站点...

这是改编:

#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047
#define NOTE_CS6 1109
#define NOTE_D6  1175
#define NOTE_DS6 1245
#define NOTE_E6  1319
#define NOTE_F6  1397
#define NOTE_FS6 1480
#define NOTE_G6  1568
#define NOTE_GS6 1661
#define NOTE_A6  1760
#define NOTE_AS6 1865
#define NOTE_B6  1976
#define NOTE_C7  2093
#define NOTE_CS7 2217
#define NOTE_D7  2349
#define NOTE_DS7 2489
#define NOTE_E7  2637
#define NOTE_F7  2794
#define NOTE_FS7 2960
#define NOTE_G7  3136
#define NOTE_GS7 3322
#define NOTE_A7  3520
#define NOTE_AS7 3729
#define NOTE_B7  3951
#define NOTE_C8  4186
#define NOTE_CS8 4435
#define NOTE_D8  4699
#define NOTE_DS8 4978
 
int melodyPin = D2;
 
int marioMelody[] = {
 2637, 2637, 0, 2637,
 0, 2097, 2637, 0,
 NOTE_G7, 0, 0,  0,
 NOTE_G6, 0, 0, 0,
 NOTE_C7, 0, 0, NOTE_G6,
 0, 0, NOTE_E6, 0,
 0, NOTE_A6, 0, NOTE_B6,
 0, NOTE_AS6, NOTE_A6, 0,
 NOTE_G6, NOTE_E7, NOTE_G7,
 NOTE_A7, 0, NOTE_F7, NOTE_G7,
 0, NOTE_E7, 0, NOTE_C7,
 NOTE_D7, NOTE_B6, 0, 0,
 NOTE_C7, 0, 0, NOTE_G6,
 0, 0, NOTE_E6, 0,
 0, NOTE_A6, 0, NOTE_B6,
 0, NOTE_AS6, NOTE_A6, 0,
 NOTE_G6, NOTE_E7, NOTE_G7,
 NOTE_A7, 0, NOTE_F7, NOTE_G7,
 0, NOTE_E7, 0, NOTE_C7,
 NOTE_D7, NOTE_B6, 0, 0
};
 
int tempo[] = {
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 9, 9, 9,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 9, 9, 9,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12
};
 
int underworldmelody[] = {
 NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,
 NOTE_AS3, NOTE_AS4, 0,
 0,
 NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,
 NOTE_AS3, NOTE_AS4, 0,
 0,
 NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,
 NOTE_DS3, NOTE_DS4, 0,
 0,
 NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,
 NOTE_DS3, NOTE_DS4, 0,
 0, NOTE_DS4, NOTE_CS4, NOTE_D4,
 NOTE_CS4, NOTE_DS4,
 NOTE_DS4, NOTE_GS3,
 NOTE_G3, NOTE_CS4,
 NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4,
 NOTE_GS4, NOTE_DS4, NOTE_B3,
 NOTE_AS3, NOTE_A3, NOTE_GS3,
 0, 0, 0
};
//Underwolrd tempo
int underworldtempo[] = {
 12, 12, 12, 12,
 12, 12, 6,
 3,
 12, 12, 12, 12,
 12, 12, 6,
 3,
 12, 12, 12, 12,
 12, 12, 6,
 3,
 12, 12, 12, 12,
 12, 12, 6,
 6, 18, 18, 18,
 6, 6,
 6, 6,
 6, 6,
 18, 18, 18, 18, 18, 18,
 10, 10, 10,
 10, 10, 10,
 3, 3, 3
};
 
void setup(){
   delay(1000);
}
 
void loop(){
   for(int thisNote = 0; thisNote < 78; thisNote++){
       int noteDuration = 1500/tempo[thisNote];
       tone(melodyPin, marioMelody[thisNote], noteDuration);
 
       int pause = noteDuration * 1.33;
       delay(pause);
 
       noTone(melodyPin);
   }
 
   delay(2000);
   for(int thisNote = 0; thisNote < 56; thisNote++){
       int noteDuration = 1300/underworldtempo[thisNote];
       tone(melodyPin, underworldmelody[thisNote], noteDuration);
 
       int pause = noteDuration * 1.33;
       delay(pause);
 
       noTone(melodyPin);
   }
 
}
 

 可以肯定的是,它会同时播放这两种曲调,而且聆听它们真的很有趣。从这里开始,我计划让它变得更加智能例如,假设您想要触发声音,因为房子对面的另一个 Photon 发布了一个事件。

 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1储能电源市场分析
  2. 7.99 MB  |  11次下载  |  免费
  3. 2储能电源市场分析报告
  4. 2.61 MB   |  7次下载  |  免费
  5. 3labview文档教程资料(一)
  6. 24.29 MB   |  2次下载  |  免费
  7. 4第三代SiC功率半导体动态可靠性测试系统介绍
  8. 8.02 MB   |  1次下载  |  免费
  9. 5用于便携可穿戴设备的RX8130CE
  10. 277.67 KB  |  1次下载  |  免费
  11. 6英集芯IP5353 QFN32 规格书pdf
  12. 2.70 MB  |  1次下载  |  免费
  13. 742V、5A SIMPLE SWITCHER® 特性降压稳压器LM22677/-Q1数据表
  14. 1.54MB   |  1次下载  |  免费
  15. 83.5V 至 36V 输入、1V 至 20V 输出、6A 电源模块LMZM33606数据表
  16. 1.97MB   |  1次下载  |  免费

本月

  1. 1STM32国内外发展现状
  2. 1.15 MB   |  16次下载  |  免费
  3. 2传感芯片选型指南
  4. 3.60 MB   |  12次下载  |  免费
  5. 3储能电源市场分析
  6. 7.99 MB  |  11次下载  |  免费
  7. 4ATmega8芯片中文手册
  8. 2.45 MB   |  8次下载  |  1 积分
  9. 5TDK电容器产品指南
  10. 11.88 MB   |  7次下载  |  1 积分
  11. 62A多电池高效开关充电器AN_SY6912A中文资料规格书
  12. 1.43 MB   |  7次下载  |  免费
  13. 7储能电源市场分析报告
  14. 2.61 MB   |  7次下载  |  免费
  15. 816A 输出电流,高可靠、高效率 同步降压转换器PCD3201产品手册
  16. 0.47 MB   |  6次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935091次下载  |  免费
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420050次下载  |  免费
  5. 3Altium DXP2002下载入口
  6. 未知  |  233068次下载  |  免费
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191317次下载  |  免费
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183316次下载  |  免费
  11. 6labview8.5下载
  12. 未知  |  81567次下载  |  免费
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73789次下载  |  免费
  15. 8NI LabVIEW中实现3D视觉的工具和技术
  16. 未知  |  70088次下载  |  免费