Firmata ライブラリ

Firmataは、ホストコンピュータ上のソフトウェアからArduinoや86Duinoなどのマイクロコントローラと通信するための汎用プロトコルです。プロトコルの詳細はWikiページをご覧ください。Firmataプロトコルの詳細については、http://firmata.orgをご覧ください。

Firmata ライブラリは Firmata プロトコルを実装しており、使用しているプログラミング環境用に独自のプロトコルやオブジェクトを作成することなく、カスタムファームウェアを作成できます。(Firmata ライブラリを介して 86Duino が Processing と通信する様子を示す ビデオ をご覧いただくと興味深いかもしれません。)

方法

  • Firmata.begin: ライブラリを起動する
  • Firmata. begin(long): ライブラリを起動し、デフォルトのボーレートを上書きします
  • Firmata.printversion: プロトコルバージョンをホストコンピュータに送信する
  • Firmata.blinkVersion: ピン13のプロトコルバージョンを点滅させる
  • Firmata.printFirmwareVersion: ファームウェアの名前とバージョンをホストコンピュータに送信します
  • Firmata.setFirmwareVersion(byte major, byte minor): スケッチのファイル名から .pde を除いたファームウェア名とバージョンを設定します。

メッセージの送信:

  • Firmata.sendAnalog(byte pin, int value): アナログメッセージを送信する
  • Firmata.sendDigitalPorts(byte pin, byte firstPort, byte secondPort): デジタルポートを individual bytes として送信します。
  • Firmata.sendDigitalPortPair(byte pin, int value): デジタルポートを1つのintとして送信する
  • Firmata.sendSysex(byte command, byte bytec, byte* bytev): 任意のバイト配列を含むコマンドを送信する
  • Firmata.sendString(const char* string): ホストコンピュータに文字列を送信する
  • Firmata.sendString(byte command, const char* string): カスタムコマンドタイプを使用してホストコンピュータに文字列を送信します

メッセージの受信:

  • Firmata.available(): バッファに着信メッセージがあるかどうかを確認します
  • Firmata.processInput(): バッファから受信したメッセージを処理し、登録されているコールバック関数にデータを送信します。
  • Firmata.attach(byte command, callbackFunction myFunction): 受信メッセージタイプに関数を添付する
  • Firmata.detach(byte command): 受信メッセージタイプから関数を切り離す

コールバック関数

関数をメッセージタイプにアタッチするには、関数が標準のコールバック関数と一致している必要があります。Firmataには現在、genericstringsysexの3種類のコールバック関数があります。

  • generic
    void callbackFunction(byte pin, int value);
  • system_reset
    void systemResetCallbackFunction(void);
  • string
    void stringCallbackFunction(char *myString);
  • sysex
    void sysexCallbackFunction(byte pin, byte byteCount, byte *arrayPointer);

メッセージの種類:

これらは関数を添付できるさまざまなメッセージ タイプです。

  • ANALOG_MESSAGE: 1つのピンのアナログ値
  • DIGITAL_MESSAGE: 8ビットのデジタルピンデータ(1ポート)
  • REPORT_ANALOG: アナログピンのレポートを有効/無効にする
  • REPORT_DIGITAL: デジタルポートのレポートを有効/無効にする
  • SET_PIN_MODE: ピン モードを INPUT/OUTPUT/PWM などに変更します。
  • FIRMATA_STRING: Cスタイルの文字列。関数型にはstringCallbackFunctionを使用します。
  • SYSEX_START: 汎用の任意長メッセージ(MIDI SysExプロトコル経由)。関数タイプにはsysexCallbackFunctionを使用します。
  • SYSTEM_RESET: ファームウェアをデフォルト状態にリセットするメッセージ。関数タイプには systemResetCallbackFunction を使用します。

この例では、Firmata を使用してアナログ メッセージを送受信する方法を示します。

#include <Firmata.h>
 
byte analogPin;
 
void analogWriteCallback(byte pin, int value)
{
    pinMode(pin,OUTPUT);
    analogWrite(pin, value);
}
 
void setup()
{
    Firmata.setFirmwareVersion(0, 1);
    Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
    Firmata.begin();
}
 
void loop()
{
    while(Firmata.available()) {
        Firmata.processInput();
    }
    for(analogPin = 0; analogPin < TOTAL_ANALOG_PINS; analogPin++) {
        Firmata.sendAnalog(analogPin, analogRead(analogPin)); 
    }
}

デモビデオ


ライブラリリファレンスホーム

86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。

上部へスクロール