外部ライブラリ

基本操作

マイクロコントローラに接続されているデバイス,またはマイクロコントローラ自体において,既存のライブラリを使いたいこともあるだろう.

そのようなライブラリは,MicrocontrollerEmbedCode[,<|,"Libraries"->paths,|>]という形で"Libraries"特性にパスを指定することで使用することができる.

デバイス用の外部ライブラリのコードは,入力または出力のチャンネルをタイプ"ExternalLibrary"とし,追加のチャンネル指定をサブオプションとして加えると,生成されたコードとともに差し込むことができる.したがって,外部ライブラリの機能を使用する入力または出力チャンネルは"ExternalLibrary"-><|libkey1->val1,|>のように指定する.

ライブラリがマイクロコントローラ自体で使用される場合は,外部ライブラリのコードの指定はMicrocontrollerEmbedCode[sys, <|,libkeyi->valuei,|>,]のようにマイクロコントローラの第2引数で指定しなければならない.

外部ライブラリのためのキー libkeyi は,プログラムのどの部分に外部ライブラリコードを差し込むのかを指定するもので,以下のものがある:

"IncludeFiles"インクルードするファイル
"Definitions"マクロの定義
"Declarations"関数宣言
"Utilites"ユーティリティ関数・変数
"Initializations"プログラムの初期化
"Loop"各サンプリング時点で実行する
"PreLoop""Loop"の前に実行する
"PostLoop""Loop"の後に実行する
"UntimedLoop"プロセッサが解放されているときに繰り返し実行する

外部ライブラリの可能なサブオプション

各部の場所はプログラムの一般的なレイアウトから分かる.

Pololuライブラリの例

PololuのZumoロボットには押しボタンとブザーがある.またそれらとインタラクトするためのライブラリも提供されている.Arduino用のライブラリをインストールする標準的な手順に従うと,提供されたArduinoの例が実行できるようになり,正しく動作していることが確認できる.

この例では,フォルダPushButtonおよびZumoBuzzerの中身だけが必要である.ここでは,これらのフォルダの場所はファイルシステムのどこでもよい.

ライブラリの場所.
インクルードとユーティリティの各部のコード.

ボタンのライブラリには,ボタンが押されているかどうかを確認するのに使用できる isPressed 関数がある.ライブラリを使って,ボタンの状態に応じてが得られる.

入力指定.

系は入力をそのまま通す.そのため,sys の出力もである.

系.

ブザーライブラリには指定された音を鳴らすことができる playNote 関数がある.音はライブラリのヘッダファイルで定義される.出力は変数 playQ に設定され,音は sys の出力がの場合にのみ鳴らされる.

出力指定.

コードが埋め込まれたら,ブザーはボタンが押されるたびに鳴るようになる.

パッケージをロードする.
コードを埋め込む.

Arduinoライブラリの例

Arduino言語には擬似乱数を生成するための random という関数がある.前の例と同様にライブラリの場所とその他のコード各部を指定する必要がある.

Arduino関数randomを使ってからまでの乱数を生成する.
値をシリアルポートで返すコードを埋め込む.

これで,デバイスフレームワークを使って値を読み込むことができる.

入ってくるデータを解釈する関数.
シリアル接続を開き,データを読み込むタスクのスケジュールを設定する.
しばらくしたらタスクを削除し,デバイスを閉じる.

集められたデータの事後解析ができる.

ヒストグラクを生成する.
分布の母数を推定する.