电子发烧友App

硬声App

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

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

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>如何制作可以播放音乐的步进电机

如何制作可以播放音乐的步进电机

2023-06-07 | zip | 0.52 MB | 次下载 | 免费

资料介绍


pYYBAGR_2eKAEAHZAAMSUgHWuuw771.png
pYYBAGR_2e-AYkwOAAHLGS6wgpQ283.png

成分

A4988 步进电机驱动器模块 × 6
NEMA17步进电机 × 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
多重复合
x 1
12V 3A 交流适配器 x 1
ARDUINO_纳米 × 2

描述

用步进电机播放音乐。

如何制作可以播放音乐的步进电机

任何 12V NEMA17 标准步进电机都可以工作。

如果您根据板上的丝绸编写零件,它将起作用。

打开电源将程序写入arduino。

请将接收节目的频道更改为您要接收的频道。

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

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

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

即使您没有 DCDC 转换器,如果您通过 USB 为 Arduino 供电,它也可以工作。

支持弯音事件。

光电耦合器已被确认可与 TLP2630 和 TLP2662 一起使用

代码

主要代码

阿杜诺

  #include
  #include
   
  // 音の周波数の配列(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チャンネル
   
  // チャンネル(音声)の数
  const int CH_CNT = 3;
  int intervals[CH_CNT] = { 0,0,0 }; // 各チャンネルの現在の音の値
  int currentPitchBend[CH_CNT] = { 0, 0, 0 }; // 各チャンネルのピッチベンド値
  Tone tones[CH_CNT]; // 各チャンネルのToneインスタンス
  const byte SND_PINS[CH_CNT] = { 2,3,4 }; // 各チャンネルのPWM出力ピン番号
   
  MIDI_CREATE_DEFAULT_INSTANCE(); // MIDIインスタンスを作成
   
  void setup()
  {
  for (int i = 0; i < CH_CNT; i++) {
  pinMode(SND_PINS[i], OUTPUT); // PWM出力ピンを出力モードに設定
  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データが受信された場合
  command = MIDI.getType(); // 受信するMIDIチャンネルを設定
   
  if (command == midi::NoteOn) { // ノートオンメッセージの場合
  data1 = MIDI.getData1();// ノート番号を取得
  data2 = MIDI.getData2();// ベロシティを取得
   
  if (data2 > 0) { // ベロシティが0より大きい場合(ノートが再生されている場合)
  for (int i = 0; i < CH_CNT; i++) {
  if (intervals[i] == 0) { // 使用可能なチャンネルを探す
  intervals[i] = data1;// チャンネルの音の間隔を設定
  tones[i].play(noteFreq[data1] * (1 + (float)currentPitchBend[i] / 8192.0)); // ピッチベンド値に応じて周波数を調整してノートを再生
  break;
  }
  }
  }
  } else if (command == midi::NoteOff) { // ノートオフメッセージの場合
  data1 = MIDI.getData1();// ノート番号を取得
  for (int i = 0; i < CH_CNT; i++) {
  if (intervals[i] == data1) {// ノート番号が一致するチャンネルを探す
  intervals[i] = 0; // チャンネルの音の間隔をリセット
  tones[i].stop(); // ノートの再生を停止
  break;
  }
  }
  } else if (command == midi::PitchBend) { // ピッチベンドメッセージの場合
  data1 = MIDI.getData1();// 下位ビットを取得
  data2 = MIDI.getData2();// 上位ビットを取得
  int pitchBendValue = ((data2 << 7) | data1) - 8192; // 下位ビットと上位ビットを結合
  int channel = MIDI.getChannel() - 1;// チャンネル番号を取得
  if (intervals[channel] != 0) { // チャンネルが使用中の場合
  currentPitchBend[channel] = pitchBendValue; // ピッチベンド値を設定
  float frequency = noteFreq[intervals[channel]];// チャンネルの音の周波数を取得
  if (pitchBendValue == -8192) {// ピッチベンド値が最小値の場合、周波数を半分にする
  frequency /= 2; // 1オクターブ下げる
  } else {
  frequency *= (1 + (float)pitchBendValue / 8192.0); // ピッチベンド値に応じて周波数を調整
  }
  tones[channel].play(frequency); // ピッチベンドを反映した周波数でノートを再生
  }
  }
  }
  }

 

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

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费