### プロジェクト17:Bluetooth制御タンク
#### **(1)概要:**
前のプロジェクトでBluetoothの基本知識を学びました。このレッスンでは、Bluetoothを使ってスマートカーを制御します。Bluetoothを使用するため、送信側と受信側が必要です。このプロジェクトでは、携帯電話を送信側(マスター)として使用し、HM-10 Bluetoothモジュールに接続されたスマートカー(スレーブ)を受信側として使用します。
以前、ビットを送信してLEDを制御する方法を学びました。このロボットカーを制御する原理も同様です。
インテリジェントタンクロボットをより良く制御するために、専用のAPPを作成しました。このレッスンでは、コードを通じてこのAPP上のすべてのキー値を読み取り、タンクロボット専用のAPPをご紹介します。
#### **(2)APP上のキー機能:**
以下の表は、対応するキーの機能を示しています:
| キー | | 機能 |
| :---------------------------------------------: | :--------------------------------------------: | :----------------------------------------------------------: |
|  | | HM-10 Bluetoothモジュールとペアリング・接続;再度クリックで切断 |
|  | | 操作するロボットを選択 |
|  | | ボタンでロボットの動きを制御する |
|  | | ジョイスティックでロボットの動きを制御する |
|  | | 重力でロボットの動きを制御する |
|  | 押すと"F"を送信、離すと"S"を送信 | 押している間は前進し、離すと停止する |
|  | 押すと"L"を送信、離すと"S"を送信 | 押している間は左折し、離すと停止する |
|  | 押すと"R"を送信、離すと"S"を送信 | 押している間は右折し、離すと停止する |
|  | 押すと"B"を送信、離すと"S"を送信 | 押している間は後退し、離すと停止する |
|  | ドラッグ時に"u"+数字+"\#"を送信 | ドラッグして左モーターの速度を変更する |
|  | ドラッグ時に"v"+数字+"\#"を送信 | ドラッグして右モーターの速度を変更する |
|  | 選択してファンクションページへ移動 | |
|  | 押すと"G"を送信、再度押すと"S"を送信 | 押すと障害物回避モードに入り、再度押すと終了する |
|  | 押すと"h"を送信、再度押すと"S"を送信 | 押すと追従モードに入り、再度押すと終了する |
|  | 押すと"e"を送信、再度押すと"S"を送信 | 押すとライントレースモードに入り、再度押すと終了する |
|  | 押すと"f"を送信、再度押すと"S"を送信 | 押すと限られたスペース内移動モードに入り、再度押すと終了する |
|  | 押すと"i"を送信、再度押すと"S"を送信 | 押すとライトフォローモードに入り、再度押すと終了する |
|  | 押すと"j"を送信、再度押すと"S"を送信 | 押すと消火モードに入り、再度押すと終了する |
|  | 選択して顔表情表示モードへ移動 | |
|  | 押すと"k"を送信、再度押すと"z"を送信 | クリックすると笑顔のパターンを表示し、再度クリックすると表情をクリアする |
|  | 押すと"l"を送信、再度押すと"z"を送信 | クリックすると嫌悪のパターンを表示し、再度クリックすると表情をクリアする |
|  | 押すと"m"を送信、再度押すと"z"を送信 | クリックすると喜びの顔を表示し、再度クリックすると表情をクリアする |
|  | 押すと"n"を送信、再度押すと"z"を送信 | クリックすると悲しいパターンを表示し、再度クリックすると表情をクリアする |
|  | 押すと"o"を送信、再度押すと"z"を送信 | クリックすると軽蔑のパターンを表示し、再度クリックすると表情をクリアする |
|  | 押すと"p"を送信、再度押すと"z"を送信 | クリックするとハート型のパターンを表示し、再度クリックすると表情をクリアする |
|  | | カスタム機能インターフェースへ移動を選択;1、2、3、4、5、6の6つのキーがあり、これらのキーを使って独自に機能を拡張できる |
|  | クリックで"w"を送信 | クリックすると左側のフォトレジスタで検出されたアナログ値を表示する |
|  | クリックで"y"を送信 | クリックすると右側のフォトレジスタで検出されたアナログ値を表示する |
|  | クリックで"x"を送信 | クリックすると超音波センサーで検出された距離を表示する(単位:cm) |
|  | クリックで"c"を送信
再度クリックで"d"を送信 | 押すとファンをオンにし、再度押すとオフにする |
#### **(3)フローチャート:**

#### **(4)接続図:**

注意:
8x16 LEDパネルのGND、VCC、SDA、SCLは、拡張ボードのG(GND)、V(5V)、A4、A5に接続します。STATEとBRKは接続不要です。BTモジュールは拡張ボードに差し込みます。
#### **(5)テストコード:**
ブロックをドラッグしてコードを編集できます
(1)
(2)
(3) 
(4)
(5)
(6) 
(7)
(8)
(9)
**完全なテストコード**
(**注意:** コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードにもシリアル通信を使用するため、Bluetoothシリアル通信と競合し、アップロードが失敗する可能性があります。)

#### **(6)テスト結果:**
コードをアップロードした後、ロボットをBluetoothモジュールに接続し、Bluetooth APPとペアリングします。モータードライブシールドの電源スイッチをオンにします。ロボットを床に置き、Bluetooth APPのボタンでロボットを制御できます。

1. 上下左右の矢印でロボットをそれぞれ前進、後退、左折、右折させます。

2. ジョイスティックボタンをクリックし、白い円の中の黒い点の方向を引っ張ってロボットの移動方向を制御します。

3. 重力ボタンをクリックし、スマートフォンを前後左右に傾けると、ロボットはスマートフォンが傾いた方向に移動します。
