Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
Firmata

Firmataライブラリ

Firmataライブラリはホストコンピュータ上のソフトウェアと通信するためのFirmataプロトコルを実装する。これによりプログラム環境ごとに独自プロトコルやオブジェクトをを作成することなく、カスタムファームウェアを書くことができる。

メソッド

void begin();
ライブラリを開始する。
void begin(long);
ライブラリを開始する。デフォルトの通信速度をオーバーライドする。
void begin(Stream &s);
ライブラリを(シリアルやEthernetClientではなく)Streamを使って開始する。
void printVersion(void);
プロトコルバージョンをホストコンピュータに送信する。
void blinkVersion(void);
プロトコルバージョンを13番ピンで点滅させる。
void printFirmwareVersion(void);
ファームウェア名とバージョンをホストコンピュータに送信する。
setFirmwareVersion(x, y)
スケッチのファイル名から.inoをとったファイル名を使って、ファームウェア名とバージョンを設定する。
訳者註:xがメジャーバージョン、yがマイナーバージョンです。ファイル名は自動設定されます。また、原文では、「.ino」をとると書いてありますが、ソースコードでは、「.cpp」がとられています。
void FirmataClass::setFirmwareNameAndVersion(const char *name, byte major, byte minor)
ファームウェアの名前とバージョンの両方を設定する。

メッセージ送信

void sendAnalog(byte pin, int value);
アナログメッセージを送信する。
sendDigitalPorts(byte pin, byte firstPort, byte secondPort)
デジタルポートを個別のバイトとして送信する。
訳者註:このメソッドはソースコードには入っていませんでした。かわりに、void sendDigitalPort(byte portNumber, int portData); というメソッドの定義はありました。
void sendString(const char* string);
文字列をホストコンピュータに送信する。
void sendString(byte command, const char* string);
カスタムコマンドを使って文字列をホストコンピュータに送信する。
void sendSysex(byte command, byte bytec, byte* bytev);
任意のバイト配列を送信する。
void FirmataClass::write(byte c);
ストリームに1バイト書き込む。

メッセージ受信

int available(void);
バッファにメッセージを受信しているか調べる。
void processInput(void);
バッファに受信したメッセージを処理し、登録されたコールバック関数にデータを送信する。
void attach(byte command, callbackFunction newFunction);
メッセージタイプに従ったコールバック関数を登録する。
void detach(byte command);
メッセージタイプに従ったコールバック関数を削除する。

ユーティリティメソッド

void FirmataClass::sendValueAsTwo7bitBytes(int value);
値を2バイトで書き込む
void FirmataClass::startSysex(void);
sysexメッセージを開始する。
void FirmataClass::endSysex(void);
sysexメッセージを終了する。

コールバック関数

メッセージタイプに対応したコールバック関数を登録するためには、コールバック関数は標準コールバック関数に適合する必要がある。現在のFirmataには、genericとstring、sysexの3種類のコールバック関数の型が存在する(訳者註:system_resetを含めた4種類存在します)。

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
一つのピンのアナログ値
DIGITAL_MESSAGE
一つのピンの8ビットのデジタルポート
REPORT_ANALOG
アナログピンのレポートの許可/禁止
REPORT_DIGITAL
デジタルポートのレポートの許可/禁止
SET_PIN_MODE
ピンモードをINPUT/OUTPUT/PWM/その他に切り替える
STRING_DATA
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)); 
    }
}

バージョン

Arduino 1.8.3

オリジナルのページ

https://www.arduino.cc/en/Reference/Firmata



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system