« RFduino 実験 (3) 温度を計るサンプル | トップページ | RFduino 実験 (5) techBASICで動かしてみる »

RFduino 実験 (4) LED Buttonサンプル

Safariscreensnapz029

今回もサンプルプログラムをテストしてみました
今回は「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を送信することで処理していますね。
Xcodescreensnapz001

●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にします。
Arduinoscreensnapz008

  • 切断時のコールバック関数
    void RFduinoBLE_onDisconnect()

今回の使用例:LEDが付いてたら消す
Arduinoscreensnapz009

●RFduinoから送信(Arduinoスケッチ)

RGBシールドのAボタンを押したら1を、離したら0を送信します。

【setup関連】

  • Aボタンは5番
    int button = 5;
    Screensnapz073
  • 5番ピンをインプットにします。
    pinMode(button, INPUT);

【loop関連】

  1. ボタンが押されるまで待つ
    delay_until_button(HIGH);
  2. 押されたら1を送信する
    RFduinoBLE.send(1);
  3. ボタンが離されるのを待つ
    delay_until_button(LOW);
  4. 離されたら0を送信する
    RFduinoBLE.send(0);

の繰り返します。

上の1、3のボタンが押される・離されるのを待つ処理は

  1. 5番ピンがHIGH or LOWなら起きるように設定
    RFduino_pinWake(button, HIGH or LOW);
  2. 起こされるまで待つ(※5番ピンに限らずWakeれたら待ち終了)
    RFduino_ULPDelay(INFINITE);
  3. 目的のピン番号が押されたのか調べる(※5番ピン以外を設定しているかもしれないので、5番ピンが起きたのか調べる)
    RFduino_pinWoke(button);
  4. 起きる設定を解除する
    RFduino_resetPinWake(button);

といった感じになっています。

●iOSで受信(iOSプログラム)

iOS側の受信の処理に関しては前回書いたので、今回は割愛させて頂きます。

今回は以上ですが、動画を撮ってみましたので見てみて下さい。
では、また次回を楽しみに見に来て頂ければと思います。

RFduino資料館

---------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ

|

« RFduino 実験 (3) 温度を計るサンプル | トップページ | RFduino 実験 (5) techBASICで動かしてみる »

無線(RFduino)」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: RFduino 実験 (4) LED Buttonサンプル:

« RFduino 実験 (3) 温度を計るサンプル | トップページ | RFduino 実験 (5) techBASICで動かしてみる »