このページのMidi FirmwareをArduino Uno R3のAtmega16U2に書き込むとArduino Uno R3がMIDIデバイスになるというので、試したらけっこう苦労したのでメモ。
この記事はMac OS X 10.9.2でのことです。また、dfu-programmerは0.6.2でした。
大まかな手順は、次の通り。
1)Arduino Uno R3をArduino-Serialモードで起動
2)dfu-programmerでAtmega16U2用のファームウェアを書き込む
3)Arduino Uno R3を再起動する
注意!:MIDIデバイスにするとスケッチを転送することは(ファームウェアを元に戻さないと)できないので、MIDIデバイスにする前にスケッチを転送しておきましょう。
1)Arduino Uno R3をArduino-Serialモードで起動
Arduino Uno R3のUSBポート(Type B)のところのICSPピンのUSB側の2本をジャンパーピンでショートした状態でUSBケーブルでMacとつなぐ。
この状態だとMacに認識されない。
次にMacとつないだ状態のままでジャンパーピンを抜く。
すると、Macに認識される。
この状態がArduino-Serialモード。
2)dfu-programmerでAtmega16U2用のファームウェアを書き込む
・まずは、dfu-programmerをインストール
いろいろ試行錯誤したので、Homebrewでも大丈夫とは思いますが、私はMacPortsを使いました。
MacPortsをインストールして、次のコマンドでdfu-programmerコマンドをインストール。
sudo port install dfu-programmer
・ファームウェアの書き込み
ファームウェアをダウンロードして、ホームディレクトリに置きます。
ここでは上記サイトでダウンロードした.tgzの中のdualMoco.hex
を~/
に置いてあるとします。
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash ~/dualMoco.hex
dfu-programmer atmega16u2 reset
これでファームウェアの書き込みは終了。
3)Arduino Uno R3を再起動する
ここで、一回USBケーブルを抜いて、再度MacにつなぐとMIDIデバイスとして認識されます。
当然、もうMIDIデバイスなのでArduino IDEでスケッチを転送することはできません。
スケッチを転送するには、元のArduinoに戻すファームウェアを上記のような手順で書き込みます。
元のファームウェアはこれです> Arduino.app/Contents/Resources/Java/hardware/arduino/firmwares/atmegaxxu2/Arduino-usbserial-atmega16u2-Uno-Rev3.hex
Macでどのように認識されているかは、(Appleメニューの)「このMacについて」>「詳しい情報…」>「概要」>「システムレポート…」>「ハードウェア」>「USB」でわかります。
コマンド+Rで更新されるので、つないだら更新して確認してください。
以下は、各状態でのMacでの認識状態。
後記:まさかMacに接続した状態でジャンパーピンを抜くとは思わなくて、これに気付くまでいろいろ無駄な試行錯誤をしてしまった。