Top/Devel/電子工作/Arduino/楽器(Mozzi利用)

楽器(Mozzi利用) の変更点はてなブックマーク


今回はArduino用サウンドライブラリ[[Mozzi>http://sensorium.github.io/Mozzi/]]とWiiの[[ヌンチャクコントローラ>http://www.amazon.co.jp/exec/obidos/ASIN/B000KF9E6Q/cubic9com-22]]を[[Arduino>../]]に接続して楽器を作ってみます。

~

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

ようするに[[../楽器]]のMozzi版です。


*必要なもの
#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/]]。)
-アクティブスピーカー
-アクティブスピーカーとArduinoを接続するもの。下記など。~
なくてもArduinoに接続したワイヤを直接ミニジャックに接続できれば良いです。
--ブレッドボード
--ジャンプワイヤ(オス-オス)
--[[3.5ステレオミニジャックDIP化キット>http://akizukidenshi.com/catalog/g/gK-05363/]]
-chuck_funcs.h([[こちら>https://github.com/todbot/wiichuck_adapter/blob/master/firmware/WiichuckDemo/nunchuck_funcs.h]]からダウンロードしてください。~
「Raw」を右クリックして名前をつけて保存。
-[[Mozzi>http://sensorium.github.io/Mozzi/]]
#clear


*手順
+WiiChuckにピンヘッダを半田付けする。(labs.thingm.comと書いてある側からピンヘッダの短い方を差込み、逆側から半田付けする。)
+ArduinoのA2ピンに-、A3ピンに+、A4ピンにd、A5ピンにcが挿さるように挿す。
+圧電ブザーをGNDと10番ピンに挿さるように挿す。
+WiiChuckにヌンチャクコントローラを挿す。(ヌンチャクの金属端子の凹みがある方が上になるように挿す。)
+デジタル9番ピンにミニジャックのLとR(ステレオなら先端から1個目と2個目)を接続する。
+GNDピンにミニジャックのGNDを接続する。(ステレオなら先端から3個目)
+Mozzi.zipを解凍し、Mozziフォルダを%USERPROFILE%\Documents\Arduino\librariesにコピーする。
+USBケーブルを挿す。
+スケッチを書き込む。

*スケッチ
準備中。


*トラブルシューティング
**「コンパイル時にエラーが発生しました。」というエラーメッセージが表示される場合
「コンパイル時にエラーが発生しました。」というエラーメッセージとともに下記が表示される。
#code(,nonumber){{
Mozzi\twi_nonblock.cpp.o: In function `__vector_24':
C:\Users\foobar\Documents\Arduino\libraries\Mozzi/twi_nonblock.cpp:461: multiple definition of `__vector_24'
Wire\utility\twi.c.o:C:\Program Files (x86)\Arduino\libraries\Wire\utility/twi.c:364: first defined here
}}

原因はArduinoデフォルトのI2CプログラムとMozziのI2Cプログラムが競合しているため。

Mozzi側のI2Cプログラムは使用しないので、削除すると解決します。
-Mozzi/twi_nonblock.cpp
-Mozzi/twi_nonblock.h

*備考
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        
*/
}
}}

*参考
-[[Mozzi.ws | Yoshihito Nakanishi>http://yoshihito-nakanishi.com/mozzi/]]
-[[スイッチサイエンス - 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(B00DFTFIF0,left)
#amazon(B014FBU8JW,left)
#amazon(4800711460,left)
#amazon(4873117895,left)



差分 一覧