Nefry BTでエモいLチカをする

[ポキオ](https://pokiiio.github.io/)です。
[Nefry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/nefry)の6日目が空いていたので、私のクソライブラリのお話をさせて下さい。




## EmotionalBlink


以前、主にArduinoやESP8266用に書いたライブラリがありまして、そのライブラリをNefryBTでも使ってみたというお話です。


![blink_like_holiday_season.gif](https://qiita-image-store.s3.amazonaws.com/0/212109/4421e298-0dcb-15c3-1c75-e11db695196f.gif)
[EmotionalBlink<br>https://github.com/pokiiio/EmotionalBlink](https://github.com/pokiiio/EmotionalBlink)


このライブラリ、ざっくりいうと、**Lチカをうまいことエモくやってくれます！！**


## インストール方法や使い方

詳しいことは [ここ](https://github.com/pokiiio/EmotionalBlink/blob/master/README.md) に書いてありますので、読んでいただければ助かります（笑）


### まずはNefry BTに付いてるLEDを優しく光らせてみます

NefryBTのLEDは16ピンについているので、こんな感じで変数を宣言します。

```c
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, 16, NEO_GRB + NEO_KHZ800);
```



`Nefry.setLed()` はここのあたりの宣言をうまいこと隠蔽してくれてますが、このライブラリでは愚直に宣言する必要があります。そして、この `pixels` の初期化を  `setup(）` などでやってあげます。


```c
pixels.begin();
```


ここからが、このライブラリの真骨頂です。じんわりとした点滅は、ちょっとずつ明るさを変化させたりする必要があって、いろいろFor-Loopをまわしたりする必要があるのですが、このライブラリでは以下の１行で終了。


```c
Blink.softly(&pixels, 1, 0, 0, 255);
```


第一引数は先程の `pixels` のアドレス、第二引数はLEDの数（こんかいは１つだけ）。それ以降はRGBの値を自由に設定できます。ここでは青く光らせたかったので、 ` 0, 0, 255` を指定しています。



![nefry.gif](https://qiita-image-store.s3.amazonaws.com/0/212109/afdcc14e-bb70-ebcb-efb1-b5755e945b0f.gif)


これだけで、こんな感じでLEDを光らせることができます。コードをすべて載せると、こんな感じ。


```c
#include <Adafruit_NeoPixel.h>
#include <EmotionalBlink.h>

#define PIN 16
#define NUMLED 1
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMLED, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin();
}

void loop() {
  Blink.softly(&pixels, NUMLED, 0, 0, 255);
}
```

これだけ。



### 次に外付けのLEDテープ。同じように優しく光らせてみます


![IMG_20171204_212815384-01.jpeg](https://qiita-image-store.s3.amazonaws.com/0/212109/af004293-98b8-fbe1-d04c-41e1abe3608a.jpeg)



ほぼ同じなので、説明は省きますが、外付けのフルカラーLEDテープに対しても、同じような使い方ができます。LEDテープのGND,VIN,DINを、それぞれNefryBTのGND、3.3V、D2に繋いだとすると・・・。

```c
#include <Adafruit_NeoPixel.h>
#include <EmotionalBlink.h>

#define PIN D2
#define NUMLED 30
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMLED, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin();
}

void loop() {
  Blink.softly(&pixels, NUMLED, 255, 255, 0);
}
```

このLEDテープは、LEDが３０個ついていたので、 `#define NUMLED 30` としています。


![softly.gif](https://qiita-image-store.s3.amazonaws.com/0/212109/6cebd7d0-f989-62e0-4a2d-18e6c3d0d052.gif)


今度は黄色(255,255,0)でじんわり点滅。


### クリスマスも近いのでイルミネーションのように光らせてみます


このライブラリでは、じんわりエモく点滅させる `Blink.softly()` の他にも関数が用意されています。その一つが、 `Blink.likeHolidaySeason()` です。


```c
#include <Adafruit_NeoPixel.h>
#include <EmotionalBlink.h>

#define PIN D2
#define NUMLED 30
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMLED, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin();
}

void loop() {
  Blink.likeHolidaySeason(&pixels, NUMLED, 10000);
}
```


すべてのLEDがそれぞれランダムな色で光り始めます。


![holiday.gif](https://qiita-image-store.s3.amazonaws.com/0/212109/5ca8bd6b-79e8-686f-97da-195fecdfa944.gif)



### 最後に、パリピ点滅！


ギャル電さんに敬意を表して、 `Blink.likePartyPeople()` という関数も用意しています。

![party.gif](https://qiita-image-store.s3.amazonaws.com/0/212109/e1aa4b0b-2ac0-6b8b-f973-c40b3526c86f.gif)




## というわけで

NefryBTでいろんなLチカを簡単にできるライブラリの紹介をしました。普通のLチカに飽きてしまった人は、ぜひ使ってみて下さい。そして、これをつかって・・・続きは[Nefry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/nefry)の10日目でお話することにします。