Arduino初心者です。コードについて質問です。
midi-usb経由で、特定のノートナンバーが送られてきた時、ベロシティを取得してサーボをその値の角度にするというコードを書きたいです。
発生している問題・エラーメッセージ
しかし現状は信号を送ったつもりでも0度のまま動きません。
どこがまずいのか、どのように修正すればいいのか教えていただきたいです。
該当のソースコード
以下コードです。
#include <MIDI.h> //MIDIライブラリ読み込み
MIDI_CREATE_DEFAULT_INSTANCE();
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
MIDI.begin(); //MIDIライブラリを使う
MIDI.turnThruOff(); //MIDI IN-OUTのループ防止
myservo.attach(9);
myservo.write(55);
}
void loop()
{
uint8_t data1,data2;
if (MIDI.read() and MIDI.getType() == midi::ControlChange) //MIDIコントロールチェンジを受信したら
{
data1 = MIDI.getData1(); //CC No取得
data2 = MIDI.getData2(); //CC 値を取得
switch(data1)
{ //CC Noに応じたポートにPWM送信
case 50: //CC No
myservo.write(data2); //ポートに送る
break;
}
}
}
試したこと
ArduinoをDFUリセットした上で、atmega16u2をdualMocoLUFAに書き換え
logic pro xであらかじめ作っておいたベロシティを0〜128まで変化させるトラックを再生するも、サーボモータは動かず
ベロシティの値をそのままpwm出力し、LEDを光らせる動作を追加するも、これも消灯したまま動かず
補足情報(FW/ツールのバージョンなど)
使用しているのはArduino UNOです
回答1件
あなたの回答
tips
プレビュー