Top/Devel/電子工作/Arduino/楽器

楽器 の変更点はてなブックマーク


#ref(chuckmin.jpg,right,around,33%)
今回はWiiの[[ヌンチャクコントローラ>http://www.amazon.co.jp/exec/obidos/ASIN/B000KF9E6Q/cubic9com-22]]を[[Arduino>../]]に接続して楽器を作ってみます。

~

ヌンチャクを使ったテルミンのような楽器なので、とりあえずChuckminと名づけました。

~

#youtube(DkiVTY3TbOo)
#clear

*必要なもの
#amazon(B00DFTFIF0)
#amazon(B014FBU8JW)
#amazon(B000KF9E6Q)
-[[Arduino>../]](下記はArduino Unoに場合の接続例です。Arduino Leonardoの場合の接続方法は備考をご覧ください。)
-[[ヌンチャクコントローラ>http://www.amazon.co.jp/exec/obidos/ASIN/B000KF9E6Q/cubic9com-22]]
-[[WiiChuck>http://www.amazon.co.jp/exec/obidos/ASIN/B00DFTFIF0/cubic9com-22]]
-[[WiiChuck>http://www.amazon.co.jp/exec/obidos/ASIN/B014FBU8JW/cubic9com-22]]
-ピンヘッダ(4P)(何でも良いです。今回は [[秋月電子通商で購入しました>http://akizukidenshi.com/catalog/g/gC-03950/]]。)
-[[圧電ブザー>http://akizukidenshi.com/catalog/c/cspeaker2/]](何でもよいです。今回は TDK PS1740P02E を使用しました。)
-chuck_funcs.h([[こちら>https://github.com/todbot/wiichuck_adapter/blob/master/firmware/WiichuckDemo/nunchuck_funcs.h]]からダウンロードしてください。~
「Raw」を右クリックして名前をつけて保存。
#clear

*手順
+WiiChuckにピンヘッダを半田付けする。(labs.thingm.comと書いてある側からピンヘッダの短い方を差込み、逆側から半田付けする。)
+ArduinoのA2ピンに-、A3ピンに+、A4ピンにd、A5ピンにcが挿さるように挿す。
+圧電ブザーをGNDと10番ピンに挿さるように挿す。
+WiiChuckにヌンチャクコントローラを挿す。(ヌンチャクの金属端子の凹みがある方が上になるように挿す。)
+USBケーブルを挿す。
+下記スケッチをダウンロードし、一旦上書きする。
+スケッチと同じ場所にchuck_funcs.hを格納する。
+Arduinoに書き込む。


*遊び方
できる操作は下記の通りです。ぐにぐに操作して遊んでください。
-Cボタンを押すと、音が出ます。
-ヌンチャクを左に倒すと音階が下がり、右に倒すと音階が上がります。
-ジョイスティックを手前に倒すと音程が下がり、奥に倒すと音程が上がります。

*設定について
-DEBUG定数を1にすると、シリアルモニタにヌンチャクのセンサの現在の値が表示されます。
-notes配列をコメントアウトされている側に差し替えると、ヨナ抜き長音階になります。民謡風に聞こえる音階です。~
なお、デフォルトの音階はニロ抜き長音階で、琉球民謡風に聞こえる音階です。

*スケッチ
#code(C,nonumber,nooutline,chuckmin.ino)

*備考
Arduino Leonardoの場合は、I2Cの接続ピンが異なります。

|役割|Wiichuckでの表示|Unoでの接続先|Leonardoでの接続先|h
|GND|-|A2|GND|
|V|+|A3|3.3V|
|SDA(シリアルデータ)|d|A4|D2 または SDA|
|SCL(シリアルクロック)|c|A5|D3 または SCL|

Leonardoを使う場合は、[[トランスモグリシールド>http://www.switch-science.com/catalog/1083/]]でピンをUno互換にするか、ジャンプワイヤなどで上記の通りに接続先を変えてください。


~

また、nunchuck_funcs.hの25行目〜34行目は次のように修正してください。
#code(C,nonumber,nooutline){{
// Uses port C (analog in) pins as power & ground for Nunchuck
static void nunchuck_setpowerpins()
{
/*
#define pwrpin PORTC3
#define gndpin PORTC2
    DDRC |= _BV(pwrpin) | _BV(gndpin);
    PORTC &=~ _BV(gndpin);
    PORTC |=  _BV(pwrpin);
    delay(100);  // wait for things to stabilize        
*/
}
}}

*関連
[[../ゲームコントローラー]]

*参考
-[[スイッチサイエンス - WiiChuckアダプタ>http://www.switch-science.com/catalog/221/]]
-[[“WiiChuck” Wii Nunchuck Adapter Available » todbot blog>http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/]]

*Amazon
#amazon(B0044X2E5S,left)
#amazon(B000KF9E6Q,left)
#amazon(B014FBU8JW,left)
#amazon(4800711460,left)
#amazon(4873117895,left)
差分 一覧