AdafruitのNeoPixel 8×8 Matrixを次の2通りの方法で制御して見ます。
- Node.js + Johnny-Five で制御
- Arduino単体で制御
1.配線
次のように配線します。この配線は簡易的なものでLEDをフルパワーで点灯させることはできません。フルパワーで点灯させると過電流でパソコンのUSBポートが死にます。
2.準備
- 1.6.7以降の Arduino IDE を使用します。
- Adafruit_NeoPixelライブラリをインストールします。
インストール手順- Arduino IDEを起動
- スケッチ→ライブラリをインクルード→ライブラリを管理と進む
Library Managerが開く - Filter your search…欄にadafruit neopixelと入力
- Adafuit NeoPixel by Adafruitをクリックすると「インストール」ボタンが表示されるので,このボタンをクリックしてライブラリをインストールする。
3.IoT Controller
- MessageStandardFirmata.zipをダウロードし展開します。
- Arduinoフォルダ配下に展開生成したMessageStandardFirmataフォルダを移動します。
- Arduino IDEを起動してMessageStandardFirmataをArduino UNOに書き込みます。
書き込みが終わると接続したNeoMatrixに This is NeoMatrix 8×8 とスクロール表示されます。
注意)Arduino IDE 1.6.7 より古い環境ではコンパイルエラーとなります。1.6.7以降を使用してください。 - NeoMatrix_Message.zipをダウロードし展開します。
- ZIPファイルを展開するとNeoMatrix_Massageフォルダが生成されます。
- ターミナル・シェルを起動してcdコマンドでNeoMatrix_Massageフォルダ(ディレクトリ)に移動します。
- lsコマンドでファイル一覧を表示し,package.jsonがあることを確認します。
- package.json に記述されているモジュールを自動インストールします。
$npm install [enter] - johnny-five モジュールはpackage.jsonに記述されていないので手動インストールします。。
$npm install johnny-five [enter] - 実行
- バックグラウンドでserver.jsを実行します。
$node server.js & [enter] - client.jsを実行する。
$node client.js[enter] - server.js, client.js を実行しているマシンでブラウザを起動します。
- ブラウザで http://localhost:5030 を開くと下のページが表示されます。
- Messageエリアに表示させたいメッセージを入力します。最大文字数は255文字です。255文字以上の入力があった場合は255文字を超える部分は切り捨てられます。
- Brightnessはパネルの輝度を調整するマスターコントローラです。 0〜255の値をセットします。255が最大輝度です。
- Delayはスクロール速度を調整します。1列スクロールするのにかかる時間(delay)をセットします。単位はミリ秒です。
- Directionはスクロール方向(0〜7の値)をセットします。4〜7の値は鏡像文字をスクロールします。
- TextColorは文字の色をセットします。0〜255の値をセットします。
- BackColorは背景色セットします。0〜255の値をセットします。
- [send]ボタンをクリックすると,設定値が送信されます。Bright〜BackColorは即時に変更されますがメッセージは現在表示されているメッセージのスクロールが終わるまで変更されません。
- バックグラウンドでserver.jsを実行します。
- 今後の予定
- node –> arduino の制御コマンド送信をjohnny-fiveのio.sendString (Firmataのsysex message 機能)を使っています。
- コマンドはnode側で組み立ててプレーンテキストで送りArduino側で構文解釈してコマンドを実行しています。
- この辺のところをスマートにやりたいので,コマンドはJSONにして送ろうかと思います。node側でJSONは簡単に扱えるしArduino側にもJSONライブラリがあります。
- JSONフォーマットを使うことで,コマンド組み立て→コマンド解析の処理がすっきりするはずです。
4.Arduino単体で制御
- NeoMatrix_msg.zipをダウロードし展開します。
- Ardunoフォルダ配下に展開生成したNeoMatrix_msgフォルダを移動します。
- Arduino IDEを起動してNeoMatrix_msgをArduino UNOに書き込みます。
- NeoPixcel 8×8 Matrix に hello world がスクロール表示されます。
- 19行目の”hello world”を書き換えれば任意のメッセージをスクロール表示できます。
例:char msg[256] = “Mariko Kosaka @ Brooklyn.JS”; //message buffer - 54行目の c = panel.Color(255, 255, 0); を書き換えれば文字の色を変更できます。
例:c = panel.Color(255, 0, 0); // 文字色赤 - 55行目の c = panel.Color(0, 32, 0); を書き換えれば背景色を変更できます。
例:c = panel.Color(0, 0, 0); //背景色黒 - 28行目の char drc = 0; を書き換えればスクロール方向を変更できます。
例:char drc = 1; //下から上へ - 22行目の panel.setBrightness(16); を書き換えればLEDの輝度を変更できます。
例: panel.setBrightness(32); (輝度を上げ過ぎるとUSBポートが過電流でダウンする) - 69行目の delay(120); を書き換えればスクロース速度を変更できます。
例: delay(240); //スクロール速度を240ミリ秒/ドットにする