電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>如何制作可以播放音樂(lè)的步進(jìn)電機(jī)

如何制作可以播放音樂(lè)的步進(jìn)電機(jī)

2023-06-07 | zip | 0.52 MB | 次下載 | 免費(fèi)

資料介紹


pYYBAGR_2eKAEAHZAAMSUgHWuuw771.png
pYYBAGR_2e-AYkwOAAHLGS6wgpQ283.png

成分

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ī)播放音樂(lè)。

如何制作可以播放音樂(lè)的步進(jìn)電機(jī)

任何 12V NEMA17 標(biāo)準(zhǔn)步進(jìn)電機(jī)都可以工作。

如果您根據(jù)板上的絲綢編寫零件,它將起作用。

打開(kāi)電源將程序?qū)懭隺rduino。

請(qǐng)將接收節(jié)目的頻道更改為您要接收的頻道。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

常量 MIDI_CH = 1; // 要接收的 MIDI 通道

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

即使您沒(méi)有 DCDC 轉(zhuǎn)換器,如果您通過(guò) 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通信を開(kāi)始
? }
? ?
? 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ù)でノートを再生
? }
? }
? }
? }

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)