Firmata経由でA6, A7ピンのアナログ入力ができずにいます

こんにちは。

Rapiroのメイン基板にStandardFirmataを書き込んで、Raspberry Pi から Node.js (johnny-five) で制御して遊んでいます。この度、距離センサ(GP2Y0A21YK)を搭載して、メイン基板の拡張ピンのA6(またはA7)で値を取得しようとしましたが、うまくできませんでした。

Arduino IDE 1.8標準のStandardFirmataをそのまま(Arduino Uno設定で)書き込んだ状態だと、A6を認識してくれず、計測そのものができませんでした。
Arduino UnoはそもそもA5までしかないため、StandardFirmataの冒頭で
#define TOTAL_ANALOG_PINS 8
#define TOTAL_PINS 22
として、Boards.hで定義されたアナログ入力ピン数をオーバーライドした状態でFirmataを書き込んだところ、距離センサの値を取得することができたのですが、今度は、RapiroのサーボやLEDが制御できなくなってしまいました。具体的には、A3(17番ピン)に1をdigitalWriteしても、サーボに通電しません。LED(D3, D5, D6)も点灯できませんでした。

Firmata経由でRapiroを制御したご経験のある方、またはArduinoとFirmataの関係にお詳しい方、アドバイスやヒントがございましたら、お願いしたく存じます。

posted by mkoku on 2017-01-17 23:08

自己解決できました。

Arduino IDE の boards.txt に、以下のようにRapiro専用の記述を加えました。
こうすることで、Arduino IDEのボード選択で「Rapiro Control Board」が選べるようになります。それを選び、StandardFirmataPlusを書き込むことで、バッチリでした。
重要なのは一番下の行の「eightanaloginputs」です。これでアナログ入力を8個使えるようになるようです。通常のArduino Unoはこの指定が「standard」です。コンパイル時の定数の設定で、具体的には、pins_arduino.h 内の NUM_ANALOG_INPUTS の値を8にする設定です。

##############################################################
rapiro.name=Rapiro Control Board

rapiro.vid.0=0x0403
rapiro.pid.0=0x6015

rapiro.upload.tool=avrdude
rapiro.upload.protocol=arduino
rapiro.upload.maximum_size=32256
rapiro.upload.maximum_data_size=2048
rapiro.upload.speed=115200

rapiro.bootloader.tool=avrdude
rapiro.bootloader.low_fuses=0xFF
rapiro.bootloader.high_fuses=0xDE
rapiro.bootloader.extended_fuses=0x05
rapiro.bootloader.unlock_bits=0x3F
rapiro.bootloader.lock_bits=0x0F
rapiro.bootloader.file=optiboot/optiboot_atmega328.hex

rapiro.build.mcu=atmega328p
rapiro.build.f_cpu=16000000L
rapiro.build.board=AVR_UNO
rapiro.build.core=arduino
rapiro.build.variant=eightanaloginputs
##############################################################

なお、通常はこの board.txt は、Arduinoのインストールディレクトリ内の「hardware\arduino\avr」内にあります。が、以前に別のボード定義などをインストールしていると、Windowsの場合「C:\Users\(ユーザ名)\AppData\Local\Arduino15」内にボードの定義ファイル群がコピーされていて、そちらが優先されるようです。その場合、インストールディレクトリ内の boards.txt を書き換えてもダメなようです。それに気づくのに時間がかかり、ハマりました。さらに、AppData内のArduino15フォルダは、Arduino IDEをアンインストールしても残るので、要注意です。

posted by mkoku on 2017-01-21 16:01

Read Terms of Service upon submitting. 投稿する前に利用規約をお読みください。