NefryBTを手に入れ、初日はArduinoにある超音波センサーで距離を・・・と試してみたのですがD6,D7辺りで繋げてもいまいちできませんでした。
直ぐGroveのセンサーを3つほど買ってみたら、D2に刺すだけで動きました。
サンプルソースは以下。Nobisukeさんの記事を参考にさせてもらいました。
#include <Nefry.h>
void setup() {
Nefry.println("Grove IR Distance Interrupter !");
Nefry.setLed(0,0,0);
pinMode(D2,INPUT); //D2ポート
}
void loop() {
while(1) {
Nefry.ndelay(1000);
if(digitalRead(D2)==LOW) {
Nefry.println("Somebody is here.");
Nefry.setLed(255,255,255);
}
else {
Nefry.println("Nobody.");
Nefry.setLed(0,0,0);
}
}
}
次にNefryBTをAmbientと連携してみます。NefryBTにはAmbient向けのAPIが提供されています。
まずは、NefryBTをWifi接続するよう管理画面(SSID: NefryBTxxx-xxx, IP:192.168.4.1)へアクセスして今あるWifi環境のSSID/PASSを設定します。
設定後、DHCPで割り当てられたIPがディスプレイへ表示されます。
次にAmbientへユーザ登録して、チャネルを1つ設定。するとチャネルIDとWrite Key,Read Keyがもらえるのでそれの値を使って以下ソースに書き込みます。
#include <Nefry.h>
#include <NefryAmbient.h>
NefryAmbient nefryAmbient;
void setup() {
Nefry.println("Grove IR Distance Interrupter !");
Nefry.setLed(0,0,0);
pinMode(D2,INPUT); //D2ポート
//ambientを使えるように初期設定をします。
bool ret = nefryAmbient.begin(
xxxx, // AmbientのチャンネルIDを入力
"xxxxxxxxxxxxxxxx" // AmbientのWrite Key
);
Nefry.setProgramName("Grove_IR_Sensor");//プログラム名を指定します。
if(ret == false){
Nefry.println("Fail of SetupAmbient");
}
}
void loop() {
bool ret = true;
while(1) {
Nefry.ndelay(1000);
if(digitalRead(D2)==LOW) {
Nefry.println("Somebody is here.");
Nefry.setLed(255,255,255);
ret = nefryAmbient.set(1, 1); //field,dataの順にセットします。
if(ret == false) Nefry.println("Fail of set");
ret = nefryAmbient.send();//ambientにデータを送信します。
if(ret == false) Nefry.println("Fail of send");
}
else {
Nefry.println("Nobody.");
Nefry.setLed(0,0,0);
ret = nefryAmbient.set(1, 0); //field,dataの順にセットします。
if(ret == false) Nefry.println("Fail of set");
ret = nefryAmbient.send();//ambientにデータを送信します。
if(ret == false) Nefry.println("Fail of send");
}
}
}
出来たものがこれです。
1日目はWifi繋がってない状態でNefryAmbient.send()を実施していたので、当然クラウドアップできず、悩んでしまいました。出来たらなんてことなく簡単でした。