以前レビューした「F503i」は同じメーカーのembotというロボットと連携することができます。
- 【小学8年生|F503i】embotの連携 ~ジョイスティック編~
これまではF503iの光センサーやキー入力を使ってembotを操作しましたが、今回はembotからF503iを操作したいと思います。
【小学8年生|F503i】embotの連携 ~ジョイスティック編~
F503iとembotの関係
おさらいですが、F503iとembotを連携するときの構造は下記のとおりで、アプリにそれぞれを接続し、アプリを介してF503iとembotが連携します。
今回はembotに接続したジョイスティックを入力とし、F503iのライト(LED)を出力にします。
embotの追加
embotをアプリに追加する手順はF503iを追加した手順と同様です。F503iの代わりにembotを使うだけです。
以前の記事(F503iを追加したときの手順)を参考にしてください。
ジョイスティックの仕組みと使い方
embotにジョイスティックを接続して使用する方法は下記をご覧ください。
F503iとembotの連携例① ~ジョイスティックとライトの連携 デジタル編~
完成品の仕様
具体的なプログラムを作っていきます。今回の仕様は下記のとおりです。
- ジョイスティックを右:ライト(LED)1を点灯
- ジョイスティックを中央:ライト(LED)2を点灯
- ジョイスティックを左:ライト(LED)3を点灯
上記のとおりです。ライト1~3は下記のとおりです。
プログラムの設計
プログラムはシンプルでして、ジョイスティックの横(X)方向の値に応じて点灯させるライトを決めます。ジョイスティックの値とライトの関係は次の通り。
ジョイスティック | 0~85 | 86~170 | 171~255 |
ライト1 | 消灯(0) | 消灯(0) | 点灯(255) |
ライト2 | 消灯(0) | 点灯(255) | 消灯(0) |
ライト3 | 点灯(255) | 消灯(0) | 消灯(0) |
図にするとこんな感じです。
プログラム例
具体的なプログラムは下記のとおりです。
実行結果は下記のとおりです。
F503iとembotの連携例② ~ジョイスティックとライトの連携 アナログ編~
完成品の仕様
先程のプログラムをもう少し改良します。ジョイスティックの傾き具合に応じてライトの明るさを変えるようにします。
仕様は下記のとおりです。
- ジョイスティックを右:ライト(LED)1を最大の明るさで点灯
- ジョイスティックを中央:ライト(LED)2を最大の明るさで点灯
- ジョイスティックを左:ライト(LED)3を最大の明るさで点灯
- それ以外はジョイスティックの傾きに応じて明るさを変更
上記のとおりです。
プログラムの設計
ジョイスティックの横(X)方向の値に応じて、点灯させるライトと明るさを決めます。ジョイスティックの値とライトの関係は次の通り。
ジョイスティック | 0~85 | 86~128 | 129~170 | 171~255 |
ライト1 | 消灯 (0) |
消灯 (0) |
消灯 (0) |
点灯 (0~255) |
ライト2 | 消灯 (0) |
点灯 (0~255) |
点灯 (255~0) |
消灯 (0) |
ライト3 | 点灯 (255~0) |
消灯 (0) |
消灯 (0) |
消灯 (0) |
図にするとこんな感じです。
プログラム例
具体的なプログラムは下記のとおりです。
ひき数はparamから設定します。
実行結果は下記のとおりです。
ポイント解説
プログラムがかなり複雑だったので少し解説します。ポイントは写像関数です。
写像とは指定された範囲の値を別の範囲に変換する関数です。
今回はジョイスティックの値をライトの値に変換します。これをプログラムにしたのがfunction4です。
例えば、ジョイスティックが0~85の場合にライトの値を255~0に変換するには
- 最小(元):85 → 最小(新):0
- 最大(元):0 → 最大(新):255
で計算します。なので、ひき数1に85、ひき数2に0を設定し、写像関数を呼び出します。
まとめ
本記事のおさらいです。
- embotのジョイスティックでF503iのLEDを変えられる
- 写像を使うと指定の範囲を別の範囲に変換できる
- 関数呼び出しを使うと何個も同じ関数を作らなくて良い
- 関数呼び出しを使うときにひき数を使うとその値で計算できる
上記のとおりです。
今回はembotを入力装置として使い、F503iを出力装置として使いました。
他の使い方
他の使い方は下記の記事にまとめています。
それでは、F503iを楽しんでください(^_^)/~