14
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1円にもならない無駄な技術Advent Calendar 2014

Day 21

Firmataを使ってArduinoをPCのGPIOにしちゃう

Posted at

#PCにもGPIOがほしい

Arduinoなんかを使えば入出力することは出来るけど、たとえばネットワークから取得したデータをアレするとか、センサーから取得したデータをDBにアレするとか言う場合、Arduinoではちょっと非力だ。モジュールを追加すればネットワークとかに接続できるけどお金が余計にかかるし、面倒臭さはどんどこ増えていく。
RaspberryPiとかBeagleBoneはそれらの問題に対しての完璧な回答なのだけど、PCと接続したままでも問題なくて、今現在Arduinoしか持ってないとかいうならFirmataを使うとPCから好きなように入出力ができるようになる。RaspberryPiとかと違ってOS入れたり環境構築したりする必要もない。

#Firmataってなに? どうやって使うの?

FirmataはArduinoを接続しているPCなどから制御するためのプロトコル。使うためにはArduinoにFirmataのソフトウェアを書き込み、PC側にもFirmataが利用できるライブラリなどを導入する必要がある。

Arduino側の準備

firmata01.png

スケッチの例>Firmata>StandardFirmataを選択してArduinoに書き込むだけ。

PC側の準備

Firmata用のライブラリは多言語で複数あるのでググると良いが、ここではNode.jsのjohnny-fiveというライブラリを使った。Node.jsではFirmataのライブラリは複数あり、Arduinoの命令と同じ名前にしてあるやつなどもあったが、開発の活発さとか、いろいろなモジュールに合わせた命令があって楽しいとか、readme.mdの頭にある絵が気に入った(重要なことである)とかでこのライブラリにした。

firmata02.png

使い方は普通のNode.jsのモジュールと変わらないので特に説明することもない。


/**
 * フェードLチカ
 */
var five = require("johnny-five");
var board = new five.Board();   

function fadeBlink(time,led){
    led.fadeIn(time,function(){
        led.fadeOut(time,function(){
            fadeBlink(time,led);
        });
    });    
}

board.on("ready",function(){
    var led = new five.Led(5);
    fadeBlink(3000,led);
});

14
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?