シリアル書き込みスケッチのユーザー関数化その1
▼
VS-RC003をArduinoのシリアル経由で操作するプロジェクトがまだ続いています。
一気に最後まで作ってしまうべきかもしれませんが、Arduinoの練習がてら完成まで少しずつ前進中です。
今回新たに試したことは、
・ユーザー定義関数を使う。
・ストリング関数を使う。
・配列、文字列、16進数などの相互変換を行う。
のあたりです。
▼
今回定義したユーザー関数は、
VSRC_WnV(x,y)
です。
xには変数番号(0〜255)
yには数値データ(0〜65535)
をそれぞれ入れて使います。
変数番号(たとえばコントローラの接続設定は240)と数値データ(たとえばゲームパッド未接続なら0)を整数で指定して実行すると、アドレスと16進数リトルエンディアンを自動的に作成して書き込んでくれるという、VS-RC使いにとってはなかなか便利な関数です。
書き込みに成功すればtrue、失敗ならfalseを返してくれるようにしてみました。
▼
今回はまだテストで、シリアルモニタで結果を見られるようになっています。
この後、このユーザー関数はarduino nanoなどでも使えるようにハードウェアシリアル(0番1番ピン)用に作り直し、モニタリング機能も排除する予定です。
また、コントロール関連専用のユーザー関数VSRC_CONTROL()や、読み込み専用のVSRC_READ()、ベリファイなしの書き込みVSRC_WRITE()なども同時に作成予定です。
自分的に難しいところは超えたので、あとは作業をしていくだけです。
一通り完成し、実際にロボットを安定的に動かすテストまでできれば、自分的にはVS-RCのシリアルは攻略完了となります。
▼
以下、スケッチです。
▼
実行したシリアルモニタは下記のようになります。
VS-RC003をArduinoのシリアル経由で操作するプロジェクトがまだ続いています。
一気に最後まで作ってしまうべきかもしれませんが、Arduinoの練習がてら完成まで少しずつ前進中です。
今回新たに試したことは、
・ユーザー定義関数を使う。
・ストリング関数を使う。
・配列、文字列、16進数などの相互変換を行う。
のあたりです。
▼
今回定義したユーザー関数は、
VSRC_WnV(x,y)
です。
xには変数番号(0〜255)
yには数値データ(0〜65535)
をそれぞれ入れて使います。
変数番号(たとえばコントローラの接続設定は240)と数値データ(たとえばゲームパッド未接続なら0)を整数で指定して実行すると、アドレスと16進数リトルエンディアンを自動的に作成して書き込んでくれるという、VS-RC使いにとってはなかなか便利な関数です。
書き込みに成功すればtrue、失敗ならfalseを返してくれるようにしてみました。
▼
今回はまだテストで、シリアルモニタで結果を見られるようになっています。
この後、このユーザー関数はarduino nanoなどでも使えるようにハードウェアシリアル(0番1番ピン)用に作り直し、モニタリング機能も排除する予定です。
また、コントロール関連専用のユーザー関数VSRC_CONTROL()や、読み込み専用のVSRC_READ()、ベリファイなしの書き込みVSRC_WRITE()なども同時に作成予定です。
自分的に難しいところは超えたので、あとは作業をしていくだけです。
一通り完成し、実際にロボットを安定的に動かすテストまでできれば、自分的にはVS-RCのシリアルは攻略完了となります。
▼
以下、スケッチです。
// VS-RC003のシリアルを書き込み、ベリファイする関数のモニタリング付きスケッチ。 |
▼
実行したシリアルモニタは下記のようになります。
Serial1_write_command: w 200886 eb 0d Serial1 vsrc_read_command: r 200886 02 serial1 read data: w 200886 eb 0d Veriy OK! |
スポンサーサイト