RFduino 実験 (4) LED Buttonサンプル
今回もサンプルプログラムをテストしてみました
今回は「LED Button」のサンプルです。
iOSアプリ側からボタンを押すとRCBシールドのLEDが点灯し、RGBシールドのボタンを押すとiOSアプリ側が点灯するアプリです。前回はRFduinoからiOSへの通信を見ましたので、今回は、その逆のiOSからRFduinoへの通信を中心に見てみることにします。
説明では、RGBシールドを使っていますが、LEDとスイッチがあればできます。
●iOSから送信(iOSプログラム)
- 送信のUUIDは
send_uuid = [CBUUID UUIDWithString:@"2222"];
- 送信の最大バイト数は
static const int max_data = 12;
- 送信は、NSDataにデータをセットして
[rfduino send:data];で送信!
LED Buttonサンプルでは、ボタンをタップした時の処理はAppViewController.mに書かれていて、押すと1を、離すと0を送信することで処理していますね。
●RFduinoで受信(Arduinoスケッチ)
データを受信して、LEDを付けたり消したりします。
【setup関連】
- 3番ピンのLEDを使います。
int led = 3;
- 3番を「出力」にします。
pinMode(led, OUTPUT);
- BLEスタート
RFduinoBLE.begin();
【loop関連】
- 今回のサンプルでは送信でのみ使ってるため、受信関連はなし
【コールバック関連】
- 受信データを受け取った時のコールバック関数
void RFduinoBLE_onReceive(char *data, int len)
今回の使用例:受信データが1なら3番をHIGHに、0ならLOWにします。
- 切断時のコールバック関数
void RFduinoBLE_onDisconnect()
今回の使用例:LEDが付いてたら消す
●RFduinoから送信(Arduinoスケッチ)
RGBシールドのAボタンを押したら1を、離したら0を送信します。
【setup関連】
- 5番ピンをインプットにします。
pinMode(button, INPUT);
【loop関連】
- ボタンが押されるまで待つ
delay_until_button(HIGH); - 押されたら1を送信する
RFduinoBLE.send(1); - ボタンが離されるのを待つ
delay_until_button(LOW); - 離されたら0を送信する
RFduinoBLE.send(0);
の繰り返します。
上の1、3のボタンが押される・離されるのを待つ処理は
- 5番ピンがHIGH or LOWなら起きるように設定
RFduino_pinWake(button, HIGH or LOW); - 起こされるまで待つ(※5番ピンに限らずWakeれたら待ち終了)
RFduino_ULPDelay(INFINITE); - 目的のピン番号が押されたのか調べる(※5番ピン以外を設定しているかもしれないので、5番ピンが起きたのか調べる)
RFduino_pinWoke(button); - 起きる設定を解除する
RFduino_resetPinWake(button);
といった感じになっています。
●iOSで受信(iOSプログラム)
iOS側の受信の処理に関しては前回書いたので、今回は割愛させて頂きます。
今回は以上ですが、動画を撮ってみましたので見てみて下さい。
では、また次回を楽しみに見に来て頂ければと思います。
---------------
----------------
にほんブログ
| 固定リンク
「無線(RFduino)」カテゴリの記事
- SBBLEController 1.1.0 公開(2014.06.21)
- RFduino 実験 (6) techBASICで温度計(2014.01.13)
- RFduino 実験 (5) techBASICで動かしてみる(2014.01.11)
- RFduino 実験 (4) LED Buttonサンプル(2014.01.10)
- RFduino 実験 (3) 温度を計るサンプル(2014.01.08)
この記事へのコメントは終了しました。
コメント