NefryBTでGroveセンサーをつなげる時の？について

#はじめに
[Nefry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/nefry) の15日目です。よろしくお願いします。

NefryBTをお借りしてから、少しずつですが勉強中です。
未だ初心者の域を超えておらず、でも初心者ならではの疑問、つまずきは今しかない（たぶん）と思うので、**「NefryBTでLチカをして、さあGroveセンサーをつなげてみるぞ」**のフェーズで起こりうる問題について、[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)を例にまとめてみようと思います。

#フェーズ１：Groveセンサーをつなげる
NefryBTはGrove端子があるので、Groveセンサーを手軽に接続できる・・はずなのですが、４つのGrove端子のうち、**どこに接続すればいいのか**がわかりません。

## Seeed社のHPをみよう
　Seeed社の各センサーのHPにはArduinoの[Grove Base Shield](http://wiki.seeed.cc/Base_Shield_V2/)の接続例が記載されています。例えば、[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)では、[Grove Base Shield](http://wiki.seeed.cc/Base_Shield_V2/)の**D7端子**に接続しています。

　![image.png](https://qiita-image-store.s3.amazonaws.com/0/131693/ab1ae318-16a2-1769-97ce-f8a6c5167296.png)
　[Seeed社 HPより]

　この例から、[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)は、**デジタル（D）に接続すれば良さそう**ということがわかります。NefryBTはデジタルがD2なので、**D2**に接続します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/131693/5cb1f082-5f38-682f-de58-77ce848d604f.png)


#フェーズ２：ライブラリが必要（な時がある）
　センサーの中には、ライブラリが用意されていて、サンプルもこのライブラリを使用したものになっています。
　先ほどの[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)にもライブラリがあり、Githubからダウンロードして、インストールする必要があります。

## Seeed社のHPをみよう
 [超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)のHPのSoftwareの箇所にGithubのダウンロードリンクとライブラリのインストール方法へのリンクがあります。

 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/131693/2602fe0d-6d58-b544-b280-4bba190e2fcc.png)

ライブラリのzipファイルをダウンロードして、Arduino IDEの「スケッチ」-「ライブラリをインクルード」-「.zip形式のライブラリをインストール」にてダウンロードしたライブラリのzipを指定するとインストールできます。


#フェーズ３:ソースをコピぺ
　[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)のHPのサンプルコードをコピペするのですが、ちょっとだけ修正が必要となります。
　ここで問題となるのが、**D2**に接続したセンサーは、このサンプルの「`Ultrasonic ultrasonic(７);`」の7は**いくつにすればいいのだ？**という疑問にぶつかります。
　
![image.png](https://qiita-image-store.s3.amazonaws.com/0/131693/65575626-927a-a618-c90e-eacde9041639.png)

##NefryBTの説明書をみよう
　NefryBTの説明書は、[dotstudio株式会社](https://dotstud.io/)の[NefryBT関連リンク](https://dotstud.io/docs/nefrybt-link/)内の[説明書](https://drive.google.com/file/d/0B_mvDQF8yaQRLVprUHl4WTFLWVE/view)にて公開されています。
　このうち、「各入出力のピンの機能」にNefryBTのピンと、ESP32のピンのマッピング表があるので、ここから、NefryBTの**D2**がESP32ピンの何番になっているのかを調べます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/131693/5413cf6d-bc17-386a-aadf-ae5e4feabc87.png)

　すると、23番であることがわかりますので、先ほどの「`Ultrasonic ultrasonic(７);`」は、「`Ultrasonic ultrasonic(23);`」 に置き換えることになります。
　あとは、「`#include <Nefry.h>;`」 を追加すれば、完成です。

```arduino

#include <Nefry.h>
#include <Ultrasonic.h>

Ultrasonic ultrasonic(23);

void setup() {
   Serial.begin(9600);
}

void loop() {
  
    long RangeInInches;
    long RangeInCentimeters;

    Serial.println("The distance to obstacles in front is: ");
    RangeInInches = ultrasonic.MeasureInInches();
    Serial.print(RangeInInches);//0~157 inches
    Serial.println(" inch");
    delay(250);

    RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
    Serial.print(RangeInCentimeters);//0~400cm
    Serial.println(" cm");
    delay(250);
    
}
```

シリアルモニタへの出力から、Web Consoleに変えたソースがこちら

```arduino
#include <Nefry.h>
#include <Ultrasonic.h>

Ultrasonic ultrasonic(23);

void setup() {

}

void loop() {
  
    long RangeInInches;
    long RangeInCentimeters;

    Nefry.println("The distance to obstacles in front is: ");
    RangeInInches = ultrasonic.MeasureInInches();
    Nefry.print(RangeInInches);//0~157 inches
    Nefry.println(" inch");
    Nefry.ndelay(250);

    RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
    Nefry.print(RangeInCentimeters);//0~400cm
    Nefry.println(" cm");
    Nefry.ndelay(250);
    
}
```

# 最後に
[超音波センサー](http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/)を例にまとめましたが、前回[NefryBTからセンサーの値をSlackに投稿する](https://qiita.com/HiroyukiYasui/items/7b3ec17636c2b91263e2)で使用した[Joystick](http://www.seeedstudio.com/wiki/Grove_-_Thumb_Joystick)はアナログだったので、analogReadはどうするんだといった疑問がありました。使用するセンサーごとにノウハウも違ってくると思いますので、各センサーごとにNefryBTとの繋ぎ方や、サンプルソースなどをまとめていけたらと思います。