背景
メイン基板には赤外のLEDと受信モジュールが4組搭載されています。
今回はIRを使ったプログラミングを試してみます。
Scratch
IR通信は通信とイベントのブロックにありました。
送信側
「メインLEDを点滅し、メッセージ1を送り1秒間待つ動作を続ける」
受信側
「LEDマトリクスにカウントダウン表示する。
3回メッセージ0を受信したらマトリクスLEDを緑色一色を点灯する。」
後述のspheroV2を見ると、メッセージは0-8があり、距離は0が近くて64が遠くまで届くということのようです。
spheroV2
sphero_edu.pyのメソッドを参考に同様な動作をするスクリプトを作成してみましたが、実機で送受信できませんでした。
呼び出し先のスクリプトも探ったのですが、残念ながら、できませんでした。
メソッドのコメント
仕方ないので、記載されている内容をもとにコメントを翻訳しました。
- 指定した2つのチャンネル(0と1)で送信開始する。他のBOLTがこの信号を追従または回避できるようになる。
1つ目は近距離IR信号(1メートル未満)、2つ目は遠距離IR信号(1~3メートル)のこと。
def start_ir_broadcast(self, near: int, far: int):
- 0と1を放送中のBOLTからメッセージを受信すると、放送元の進行方向と速度に合わせて調整(追いかける?)。見失ったらその場で回転
(Scratchで動作確認すると、受信者が発信者にガンガンぶつかっていたので両者の速度などの調整が難しそうです)
def start_ir_follow(self, near: int, far: int):
- 0と1を放送中のBOLTからメッセージを受信すると、放送元から離れる方向に進む。見失ったらその場で回転
def start_ir_evade(self, near: int, far: int):
まとめ
IR通信を使ったScratchを実験しました。
spheroV2は残念ながら実機で動作確認できませんでした。2週間くらい頑張って追ってもできなかったので、今回は調査を保留しました。