Arduinoスケッチのデバッグをするとき、通常はSerial.print("hoge");
とか書いて、シリアルモニターを見ながらprintデバッグをするわけですが、Firmataのスケッチを使っているとシリアルポートがFirmataプロトコルの通信に使われるため、シリアルモニターを見ることができません。Firmataを改造とかするときにSerial.printデバッグできないのはとても不便で、ドキュメントにもデバッグ方法は載ってないしでずっと悩みの種だったわけですが、重い腰をあげてちゃんと調べたら意外と簡単に見つかったので、その方法を書いておきます。なおFirmataのクライアント側はJohnny-Five(もしくはfirmata.js)を想定しています。
クライアント側(Johnny-Five)
var five = require('johnny-five');
var board = new five.Board();
board.on('ready', () => {
console.log('ready');
});
board.on('string', function (message) {
console.log(message);
});
ホスト側(Arduino)
Firmata.sendString("Insert your debug message here.");
このように、クライアント側でstring
イベントを待ち受けると、ホスト側でFirmata.sendString
した内容をそのまま文字列として受け取ることができます。簡単ですね!