![見出し画像](https://assets.st-note.com/production/uploads/images/126461809/rectangle_large_type_2_e2a03418e30258c7a78d63e360672cc7.jpg?width=1200)
忙しい人の為のステッピングモーターで演奏する方法
はじめに
忙しい人でも秒でモーターを奏でられるようになります。
さあ、今日からあなたもモタニスト。
つかうもの
ブレッドボード
ジャンパ線(オスtoオス)
A4988
Arduino UNO
12V電源
ソフトウェア
0.MIDI処理と送受信
0.1 プログラム
忙しいのですから書く暇なんてありません。
優秀な外国人のをさっさとコピペしましょう。
Arduino Code/MIDI Stepper V1にスケッチがあります。
今回の構成では69行目void setup()内よりSerial.bigin(115200)のコメントアウトを外す(//を消す)と動作します。
(後に綴りますが、bigin(115200)等のBaud rateは、プログラムとhairless-midiserialで同一の設定にする必要があります。)取り敢えずSerial.bigin(38400)にしとけば動きます。
pitches.hの追加もお忘れなく。
0.2 MIDI送受信
DominoとArduino間でのMIDIの送受信はUSBケーブル1本で行います。
その為の仮想MIDIケーブル,シリアル変換ソフト(MIDI yoke, hairless-midiserial)なのです。
0.3 Domino
MIDIはDominoから出力します。
環境設定(F12キー)から、MIDI-OUTデバイスを「out to MIDI Yoke:1」に設定しましょう。
![](https://assets.st-note.com/production/uploads/images/125222379/picture_pc_dd65728cb01985c281ba26fa1219cfba.png?width=1200)
0.4 hairless-midiserial
MIDI Inを「In From MIDI yoke:1」に設定しましょう。
次に、File→Preference→Serial Port SettingsからBaud rateの値を、プログラムの項目で述べたSerial.bigin(115200)の引数と同じにします。両者は同じ値でないと動作しません。
Serial port をArduino Unoに合わせれば、これでMIDIの送受信が可能となります。
使用の際は、プログラムを書き込みした後にブリッジをONにしてください。
![](https://assets.st-note.com/production/uploads/images/125222721/picture_pc_97c4bc7dd5342d04629c56a7f29393f8.png)
1.配線と各ピンアサインの機能
1.1 A4988
![](https://assets.st-note.com/production/uploads/images/125416492/picture_pc_5c84725be05e71b6fdbc2c0642261e21.png)
ENABLEはLOWにすると有効になり、モーター軸の固定が解除されます。
注意:ENABLEを長時間無効(モーター軸を固定)にするとモーターが異常発熱します。初期状態では無効になっている事もご留意ください。
M1,M2,M3はマイクロステップ駆動の際に用います。滑らかな回転になり、M3が一番滑らかに回転します(使えば分かる)
C7以降の高音を奏でたい時はマイクロステップを使うと脱調せず、上手く演奏できます。
また、共振(音がカスゴミみたいになる)を回避するためにも便利です。
使う際はM1,M2,M3の何れかをVDDに繋げれば機能します。
RESETとSLEEPは短絡させてください。
そういうものです。
しれっと可変抵抗もありますが、正直弄る必要ないです。
弄ることで共振が抑えられる場合があるかも。
1.2 配線
1.1に記したピンアサイン画像とプログラムとの睨めっこです。
取り合えず
STEP →2
DIR →5
ENABLE →8
この様にArduino繋げば安牌。
上記回路図より、電源関係は適当に配線して、A4988とモーターの接続はデータシート見とけば、最早完成。
ぶっちゃけコンデンサは要らん。
モーターのA相B相の線は、その製品のデータシート探せばわかる。
間違えると励磁の順番バラバラなって動かん。
完成
ちゃんちゃん。
![](https://assets.st-note.com/production/uploads/images/126461875/picture_pc_0e220d1ffe4114e42067153cf429657a.png?width=1200)
補足
モーターのテスト用プログラム
#define STEP 2
#define DIR 5
void setup(){
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
}
void loop(){
digitalWrite(DIR, HIGH);//LOWで逆回転
digitalWrite(STEP, HIGH);
delayMicroseconds(2273);//440Hz
digitalWrite(STEP, LOW);
delayMicroseconds(2273);
}