今回はBluetooth受信器で受け取ったパケットをシリアル通信でArduinoへ渡し、LEDの明るさを制御するスケッチ部分を作成したいと思います。
前回作成したBluetooth受信器で受信したパケットをArduinoへ渡す際に、今回はソフトウェアシリアルを使用したいと思います。ハードウェアシリアルはデバックに使用したいのと、電源はひとまずUSBから取りたいため空けておきます。
スケッチはこちら▼
#include <SoftwareSerial.h> char readPacket[4]; int pwm; int i = 0; SoftwareSerial Bluetooth(2, 3); //RX:2 TX:3 void setup() { Serial.begin(9600); Bluetooth.begin(9600); } void loop() { if (Bluetooth.available()) { readPacket[i] = Bluetooth.read(); if (readPacket[i] == 'e') { readPacket[i] = '\0'; pwm = atoi(readPacket); i = 0; Serial.println(pwm); } else { i++; } } analogWrite(10, pwm); }
説明のために少し回りくどい記述となってますが適宜修正して下さい。
まずincludeファイルと変数宣言します。7行目でBluetoothのシリアル通信に使用するピンをRX:2pin TX:3pinに定義します。
void setup()でハード・ソフトのシリアル通信速度を決めてます。Bluetooth側の速度を変更する場合はPIC側(Bluetooth受信器)のソースも変更する必要があるので注意必要です。SBDBTのマニュアル見ると自動で機器側と速度を合わせるとあったのですが何故か手動で変えないと変更できませんでした。なぜだろ??
void loop()では受信したバイト文字を順次変数に格納していき、接尾後”e”を受信したら終端文字に変換して文字列を数値に変換してます。途中にあるSeral.printlnはただのデバック用です。最後にPWMを10pinへ出力して終了です。
非常に簡単です。ではArduinoへ書き込んで明るさ制御してみましょう。まずスマホとBluetooth受信器のペアリングを事前に行っておく必要があります。やり方はスマホ側のやり方を確認しましょう。
スマホで検索される機器の中に***-SBDBT-****ようなものがある思いますのでそれとペアリングしておきます。その後、作成したスマホアプリを起動。connectボタンをタッチすれば機器一覧に表示されると思います。接続が完了したらスライドバーを動かしてみて下さい。LEDの明るさが変わると思います。
これで「スマホからLEDの明るさ制御」の説明は終わりです。早い人であればここまで2~3時間で完了するのではないでしょうか。
非常に手軽にスマホから無線制御できるかと思います。応用すれば簡単にモーターやサーボ制御もできると思います。今回はスマホからデータ送信でしたが機会があれば受信側も紹介したいと思います。送受信ができればいろいろ応用が利くかと思います。
コメント