資料介紹
描述
所以我在 Sparkfun 網(wǎng)站上閱讀了關(guān)于在他們的網(wǎng)站上生產(chǎn)和銷售你的小工具和小工具的能力。我真的很喜歡 Particle Photon,喜歡像 Sparkfun 這樣的網(wǎng)站,因為它們鼓勵創(chuàng)造力。?
輸入利用 Particle 固件中的 tone() 功能的想法。一旦我看到它,我就知道我需要提高我在 EagleCad 中的技能,并學(xué)習(xí)一兩件關(guān)于設(shè)計我的第一個 PCB 的事情。
盡管 Sparkfun 可能實際上不接受這篇文章作為提交,但我想與社區(qū)分享我的項目。
步驟 1. 設(shè)計 PCB
我使用 EagleCad 設(shè)計我的電路和 PCB。這個概念是,拿到這個防護罩的人可以輕松地將它與從 Sparkfun 購買的現(xiàn)有光子防護罩一起使用。
因此,如果您有一個電池保護罩,也許還有一個原型板,現(xiàn)在您想要輕松地將音樂融入您的項目中,您可以做到。
因此,我進行了大量研究和修補,或多或少地復(fù)制了 Sparkfun 銷售的現(xiàn)有防護罩的規(guī)格。當我在做的時候,我盡可能地遵循了他們的提交指南。任何購買過 Sparkfun 的 Photons shield 的人都知道 D0 和 D1 是為 I2C 保留的。所以我放置了一些焊接跳線,讓用戶可以選擇將蜂鳴器分配給哪個引腳。
在這一點上,我發(fā)現(xiàn)了一個名為 OSHPark 的服務(wù)。他們是最酷的 PCB 服務(wù)。在 EagleCad 中完成 PCB 設(shè)計后,我將 brd 文件上傳到 OSHPark,然后等了不到三周就拿到了實際的 PCB。不到 11.00 美元就不錯了!
我從他們那里訂購了一些 12 針母頭和一些 12 毫米壓電蜂鳴器并將其焊接起來。
Step 2. 音樂時間
因此,起初我復(fù)制并粘貼了有關(guān)使用 tone() 的文檔中的示例代碼。果然一打開就發(fā)出了很酷很短的小曲子!
// 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);
}
}
然后我想進一步發(fā)揮這個小項目的能力。所以我用谷歌搜索了 MarioBros 的音符,結(jié)果發(fā)現(xiàn)有人已經(jīng)將它編碼為可以在 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);
}
}
?可以肯定的是,它會同時播放這兩種曲調(diào),而且聆聽它們真的很有趣。從這里開始,我計劃讓它變得更加智能。例如,假設(shè)您想要觸發(fā)聲音,因為房子對面的另一個 Photon 發(fā)布了一個事件。
?
- AN1176–驅(qū)動壓電蜂鳴器的設(shè)計注意事項
- 使用arduino和壓電蜂鳴器制作簡單的驅(qū)蚊器 2次下載
- 使用連接到Bolt WiFi模塊的簡單壓電蜂鳴器
- Arduino圣誕壓電蜂鳴器項目
- 帶有BBC micro:bit的壓電蜂鳴器
- 華能電子 壓電蜂鳴器 MLT-9018數(shù)據(jù)手冊
- 用于sparkfun板的開發(fā)和使用 0次下載
- 適用于壓電式蜂鳴器的技術(shù)規(guī)格 4次下載
- 壓電陶瓷和壓電蜂鳴器的原理及特點、應(yīng)用 24次下載
- 基于RE46C317/18帶升壓轉(zhuǎn)換器的壓電蜂鳴器驅(qū)動器
- 基于RE46C108下的壓電蜂鳴器驅(qū)動器和穩(wěn)壓器
- 基于RE46C101下的壓電蜂鳴器驅(qū)動器和LED驅(qū)動器電路
- 基于RE46C117下的DC/DC轉(zhuǎn)換器和壓電式蜂鳴器驅(qū)動
- 壓電蜂鳴器驅(qū)動電路之RE46C100產(chǎn)品手冊
- 蜂鳴器介紹 0次下載
- 光子集成芯片和光子集成技術(shù)是什么 747次閱讀
- 蜂鳴器的發(fā)聲原理 蜂鳴器電路圖分享 1.1w次閱讀
- 蜂鳴器型號及參數(shù)規(guī)格 4310次閱讀
- 蜂鳴器的介紹 如何控制蜂鳴器的工作? 2178次閱讀
- 單片機控制蜂鳴器報警原理 4138次閱讀
- 新能源汽車高壓電纜編織屏蔽及其屏蔽效能的研究 1461次閱讀
- 蜂鳴器聲音大小和什么有關(guān) 2.2w次閱讀
- 壓電蜂鳴器的發(fā)聲機制是什么? 4776次閱讀
- 電磁式蜂鳴器和壓電式蜂鳴器的工作原理及區(qū)別 1.7w次閱讀
- 壓電式蜂鳴器的選擇和優(yōu)點 3624次閱讀
- 電磁式蜂鳴器和壓電式蜂鳴器的區(qū)別 1.2w次閱讀
- 電磁式和壓電式蜂鳴器的區(qū)別 2.6w次閱讀
- 三分鐘看懂壓電蜂鳴器工作原理及應(yīng)用 6.5w次閱讀
- 基于vhdl蜂鳴器程序設(shè)計詳解 2.1w次閱讀
- 單片機蜂鳴器控制程序和驅(qū)動電路典型設(shè)計案例 6473次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多