資料介紹
成分
A4988 步進(jìn)電機(jī)驅(qū)動(dòng)器模塊 | × 6 |
NEMA17步進(jìn)電機(jī) | × 6 |
1N4148 | x 1 |
0.1μF陶瓷電容 | x 1 |
MF1/4W-1KΩ±1% T CCO |
x 1 |
MF1/4W-220Ω±1% T | x 1 |
MIDI插座 | x 1 |
TLP2662(TP1,F) 東芝 |
x 1 |
LXDC55 | x 1 |
MJ-179PH 多重復(fù)合 |
x 1 |
12V 3A 交流適配器 | x 1 |
ARDUINO_納米 | × 2 |
描述
用步進(jìn)電機(jī)播放音樂。
如何制作可以播放音樂的步進(jìn)電機(jī)
任何 12V NEMA17 標(biāo)準(zhǔn)步進(jìn)電機(jī)都可以工作。
如果您根據(jù)板上的絲綢編寫零件,它將起作用。
打開電源將程序?qū)懭隺rduino。
請(qǐng)將接收節(jié)目的頻道更改為您要接收的頻道。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
常量 MIDI_CH = 1; // 要接收的 MIDI 通道
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
即使您沒有 DCDC 轉(zhuǎn)換器,如果您通過 USB 為 Arduino 供電,它也可以工作。
支持彎音事件。
光電耦合器已被確認(rèn)可與 TLP2630 和 TLP2662 一起使用
代碼
主要代碼
阿杜諾
? | #include |
? | #include |
? | ? |
? | // 音の周波數(shù)の配列(Hz単位) |
? | const word noteFreq[] = { |
? | 0,9,9, 10,10, 11, 12,12, 13, 14, 15, 15, |
? | 16,17, 18, 19,21, 22,23,25, 26, 28, 29, 31, |
? | 33,35, 37,39,41, 44,46, 49, 52, 55, 58, 62, |
? | 65, 69, 73, 78,82, 87,93, 98, 104,110,117,124, |
? | 131, 139, 147, 156, 165, 175, 185,196,208,220,233,247, |
? | 262, 277, 294, 311, 330, 349, 370,392,415,440,466,494, |
? | 523, 554, 587, 622, 659, 699, 740,784,831,880,932,988, |
? | 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976, |
? | 2093, 2218, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, |
? | 4186, 4435, 4699, 4978, 5274, 5587, 5920, 6272, 6645, 7040, 7459, 7902, |
? | 8372, 8870, 9397, 9956, 10548,11175,11840,12544 |
? | }; |
? | ? |
? | ? |
? | ? |
? | const int MIDI_CH = 1;// 受信するMIDIチャンネル |
? | ? |
? | // チャンネル(音聲)の數(shù) |
? | const int CH_CNT = 3; |
? | int intervals[CH_CNT] = { 0,0,0 }; // 各チャンネルの現(xiàn)在の音の値 |
? | int currentPitchBend[CH_CNT] = { 0, 0, 0 }; // 各チャンネルのピッチベンド値 |
? | Tone tones[CH_CNT]; // 各チャンネルのToneインスタンス |
? | const byte SND_PINS[CH_CNT] = { 2,3,4 }; // 各チャンネルのPWM出力ピン番號(hào) |
? | ? |
? | MIDI_CREATE_DEFAULT_INSTANCE(); // MIDIインスタンスを作成 |
? | ? |
? | void setup() |
? | { |
? | for (int i = 0; i < CH_CNT; i++) { |
? | pinMode(SND_PINS[i], OUTPUT); // PWM出力ピンを出力モードに設(shè)定 |
? | tones[i].begin(SND_PINS[i]); // 各チャンネルのToneを初期化 |
? | } |
? | MIDI.begin(); // MIDI通信を開始 |
? | } |
? | ? |
? | void loop() |
? | { |
? | uint8_t data1, data2, command; |
? | ? |
? | if (MIDI.read()) { |
? | MIDI.setInputChannel(MIDI_CH); // MIDIデータが受信された場(chǎng)合 |
? | command = MIDI.getType(); // 受信するMIDIチャンネルを設(shè)定 |
? | ? |
? | if (command == midi::NoteOn) { // ノートオンメッセージの場(chǎng)合 |
? | data1 = MIDI.getData1();// ノート番號(hào)を取得 |
? | data2 = MIDI.getData2();// ベロシティを取得 |
? | ? |
? | if (data2 > 0) { // ベロシティが0より大きい場(chǎng)合(ノートが再生されている場(chǎng)合) |
? | for (int i = 0; i < CH_CNT; i++) { |
? | if (intervals[i] == 0) { // 使用可能なチャンネルを探す |
? | intervals[i] = data1;// チャンネルの音の間隔を設(shè)定 |
? | tones[i].play(noteFreq[data1] * (1 + (float)currentPitchBend[i] / 8192.0)); // ピッチベンド値に応じて周波數(shù)を調(diào)整してノートを再生 |
? | break; |
? | } |
? | } |
? | } |
? | } else if (command == midi::NoteOff) { // ノートオフメッセージの場(chǎng)合 |
? | data1 = MIDI.getData1();// ノート番號(hào)を取得 |
? | for (int i = 0; i < CH_CNT; i++) { |
? | if (intervals[i] == data1) {// ノート番號(hào)が一致するチャンネルを探す |
? | intervals[i] = 0; // チャンネルの音の間隔をリセット |
? | tones[i].stop(); // ノートの再生を停止 |
? | break; |
? | } |
? | } |
? | } else if (command == midi::PitchBend) { // ピッチベンドメッセージの場(chǎng)合 |
? | data1 = MIDI.getData1();// 下位ビットを取得 |
? | data2 = MIDI.getData2();// 上位ビットを取得 |
? | int pitchBendValue = ((data2 << 7) | data1) - 8192; // 下位ビットと上位ビットを結(jié)合 |
? | int channel = MIDI.getChannel() - 1;// チャンネル番號(hào)を取得 |
? | if (intervals[channel] != 0) { // チャンネルが使用中の場(chǎng)合 |
? | currentPitchBend[channel] = pitchBendValue; // ピッチベンド値を設(shè)定 |
? | float frequency = noteFreq[intervals[channel]];// チャンネルの音の周波數(shù)を取得 |
? | if (pitchBendValue == -8192) {// ピッチベンド値が最小値の場(chǎng)合、周波數(shù)を半分にする |
? | frequency /= 2; // 1オクターブ下げる |
? | } else { |
? | frequency *= (1 + (float)pitchBendValue / 8192.0); // ピッチベンド値に応じて周波數(shù)を調(diào)整 |
? | } |
? | tones[channel].play(frequency); // ピッチベンドを反映した周波數(shù)でノートを再生 |
? | } |
? | } |
? | } |
? | } |
?
- 基于51單片機(jī)的蜂鳴器播放音樂源代碼 68次下載
- 用Ameba播放音樂
- 基于Labview制作的音樂播放器源碼分享 75次下載
- 基于51單片機(jī)的音樂播放器的制作 113次下載
- 蜂鳴器播放音樂設(shè)計(jì)與實(shí)現(xiàn)(附源碼) 90次下載
- 使用單片機(jī)實(shí)現(xiàn)蜂鳴器播放音樂之八月桂花的程序免費(fèi)下載 25次下載
- 使用單片機(jī)仿真播放音樂的代碼和工程文件免費(fèi)下載 7次下載
- 使用51單片機(jī)設(shè)計(jì)可以播放音樂和快進(jìn)功能的電子琴資料合集免費(fèi)下載
- 如何使用51單片機(jī)控制無源蜂鳴器播放音樂的程序免費(fèi)下載
- 蜂鳴器播放音樂C語(yǔ)言程序免費(fèi)下載 46次下載
- HL開發(fā)板的蜂鳴器播放音樂學(xué)習(xí)程序 16次下載
- 8051單片機(jī)播放音樂 32次下載
- 蜂鳴器播放音樂程序 34次下載
- 蜂鳴器播放音樂 41次下載
- 51單片機(jī)播放音樂編碼程序 ,music encodeV1.
- 如何使用音頻接口播放音頻文件 686次閱讀
- 什么是步進(jìn)電機(jī)?步進(jìn)電機(jī)的類型和結(jié)構(gòu) 1633次閱讀
- 基于STM32單片機(jī)的嬰兒床控制系統(tǒng)設(shè)計(jì) 1535次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 8108次閱讀
- 什么是步進(jìn)電機(jī)?步進(jìn)電機(jī)單極和雙極的區(qū)別 1.5w次閱讀
- 基于STM32的步進(jìn)電機(jī)速度控制 1.1w次閱讀
- 步進(jìn)電機(jī)的結(jié)構(gòu)和接線方案 1w次閱讀
- 步進(jìn)電機(jī)控制器原理_步進(jìn)電機(jī)控制器編程實(shí)例 1.6w次閱讀
- 制作可以自己編曲的音樂門鈴電路資料免費(fèi)下載 3496次閱讀
- 步進(jìn)電機(jī)的主要特點(diǎn) 1.6w次閱讀
- 什么是步進(jìn)電機(jī)?步進(jìn)電機(jī)的特點(diǎn),分類與原理! 3.8w次閱讀
- 步進(jìn)電機(jī)工作效率如何_步進(jìn)電機(jī)的選擇方法 4789次閱讀
- 步進(jìn)電機(jī)相序如何判斷_步進(jìn)電機(jī)主要在哪些方面應(yīng)用 1.4w次閱讀
- 什么是混合式步進(jìn)電機(jī)_混合式步進(jìn)電機(jī)和反應(yīng)式步進(jìn)電機(jī)的區(qū)別 1.6w次閱讀
- 步進(jìn)電機(jī)的硬件電路設(shè)計(jì),步進(jìn)電機(jī)驅(qū)動(dòng)原理及方法 3.2w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多