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

( Allowed tags: <b> <s> <code> <blockquote> <img> . Automatic URL link.)

Uploaded image is placed to the bottom of the post. To add multiple images, make post once then edit the post.

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