node.jsでAdafruit 32x16 RGB LED Matrixを制御する
前回のpostで、LED Matrixのサンプルを動かせました。
引き続き、発光パターンの制御をするために、node.jsを使って制御してみます。
node.jsで使用するためのライブラリとして、node-rpi-rgb-led-matrixが公開されているので、これを使ってみます。
0.node.jsのインストール
これは解説がたくさんあるので割愛します。
個人的にはnodebrew派なので、この記事を参考にさせて頂いています。
後述しますが、sudo権限でnodeが使えるようにしておいてください。
Raspberry PiにNode.js実行環境を構築 - ブログを書くまでが
1.プロジェクトの作成
適当にプロジェクトディレクトリを作って、npmを初期化
1 | $ mkdir node-ledmatrix |
npmの初期化に色々聞かれますが、とりあえず適当でOKです。
2.ライブラリのインストール
1 | $ npm i node-rpi-rgb-led-matrix --save |
あー、色々warningでるな。とりあえず、無視で。
3.サンプルを動かしてみる
test.jsを作成して、サンプルコードを入れてみます。エディタは何でも。
1 | $ nano test.js |
で、下記のサンプルコード(npmのreadmeそのまま転記)を入力して、保存します。
1 | var LedMatrix = require("node-rpi-rgb-led-matrix"); |
できたら実行してみる。
1 | $ sudo node test.js |
一瞬ピンクに光って、{x: 0, y: 0}のピクセルが青く光りました。よかった。
リフレッシュレートとか決められるのかな。
ちなみにここで、
1 | $ node test.js |
とやると、
1 | can't open /dev/mem: : Permission denied |
のエラーが出ます。/dev/mem
のアクセス権限エラーですね。
githubのissueで議論されていました。対処する必要がある方は参考にしてみてください。
How do you run this as sudo? · Issue #12 · zeitungen/node-rpi-rgb-led-matrix
4.一瞬光るだけだと物足りない人に
1 | var LedMatrix = require("node-rpi-rgb-led-matrix"); |
delay(1000);
の代わりのsetTimeout…笑
常に信号送ってないと光らないわけじゃないんだな。
ちなみに、最初にmatrix.clear();
入れた方が安定しました。
今日はここまで。