5月 262015
<< Circle CIのビルド結果をHubotで通知 || Hubotでbotを3秒で作る >>
littleBitsのArduinoモジュールをNodeから使うFirmataのラッパーを書いた。PCで動かしているNodeからlittlebitsを操作できる。
https://www.npmjs.com/package/littlebits-arduino
https://github.com/shokai/node-littlebits-arduino
littleBitsは専用のマグネットコネクタで接続する電子工作ツールキットで、このコネクタのおかげで部品が壊れるような向きには絶対接続できないようになっている。サーボモーターとLEDとスピーカーみたいな回路的に全然違う物も全部「output module」として組み換え可能になるようにモジュール化されていたりと、回路としては無駄は多いけどとてもソフトウェア的な考え方で作られていて面白い。回路わからない人でも適当につなげれば動くのはすごい。
インストール
% npm i littlebits-arduino
使い方
左側の3つが入力、右側が出力ポートになる。

d1やa0のようなポート名そのままのアクセサがあるので、読み取ったり代入したりすると操作できる。
なおarduino-firmata npmを単純にextendしただけなので、arduino-firmataのdigitalWriteやanalogRead等の関数もそのまま使える。
var LittleBitsArduino = require('littlebits-arduino'); var arduino = new LittleBitsArduino(); arduino.connect(); // use default Arduino // arduino.connect('/dev/tty.usb-device-name'); arduino.on('connect', function(){ setInterval(function(){ var d0 = arduino.d0; // true or false var a0 = arduino.a0; // 0~1023 analog input var a1 = arduino.a1; // 0~1023 analog input console.log([d0, a0, a1]); arduino.d1 = d0; // digital output arduino.d5 = a0/4; // 0~255 analog output arduino.d9 = a1/4; // 0~255 analog output }, 100); });
Ruby用
Rubyでlittlebits操作するのはどうやるのかな、と思って検索したらlittle_bitsというgemがあって、node版ではこれのインタフェースを参考にさせてもらった。ほぼ同じ雰囲気で使える。あと、中を見たらで自分が作ったarduino_firmata gemが使われていて、入力ポートを読むとか足りない機能があったのでプルリクしておいた。