littleBitsArduinoモジュールを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が使われていて、入力ポートを読むとか足りない機能があったのでプルリクしておいた。