ArduinoでGrove光センサSEN11302PとLEDバーLED05031Pを試す

# 準備

適宜、ご自身の環境に読み替えてくださいませ。

* 環境
 * HW
     * Windows PC (Windows 7 Pro 64bit)
     * Arduino Uno
     * [Grove ベースシールド V2 SLD01099P](http://www.seeedstudio.com/depot/Base-Shield-V2-p-1378.html)
     * [Grove 光センサ SEN11302P](http://www.seeedstudio.com/depot/Grove-Light-Sensor-p-746.html)
     * [Grove LED バー LED05031P](http://www.seeedstudio.com/depot/grove-led-bar-p-1178.html)
 * SW
     * Arduino IDE 1.6.0 / 1.6.1

# CASE1:光センサ値をシリアルモニタで確認する

まずは、単に取得値を確認します。

## 1. 光センサをベースシールドの**A0端子**に接続する

![004-01-light.jpg](https://qiita-image-store.s3.amazonaws.com/0/68547/e1cf977f-4be3-012e-3a01-9d8b231e3b81.jpeg)

ピンアサインは、下表です。

| Arduino | Sensor | Color |
|:-:|:-:|:-:|
| GND | GND | Black |
| VCC | VCC | Red |
| A1 | NC | White |
| A0 | SIG | Yellow |

## 2. スケッチを作成する

とてもシンプルです。

```lang:Grove_Light_Sensor.ino
#define LIGHT_SIG A0

void setup() {
  Serial.begin( 9600 );
  pinMode( LIGHT_SIG, INPUT );
}

void loop() {
  int sValue = analogRead( LIGHT_SIG );
  Serial.print("the light sensor value is ");
  Serial.println( sValue );
  delay( 1000 );
}
```

## 3. 動作を確認する

1. Arduino IDE にてコンパイル＆書き込み
2. シリアルモニタを起動し、ログを確認する  
[ツール] → [シリアルモニタ]  

## 4. 感想

* 当然、簡単に動作しました。
* センサ値が 0 ～ 1023 の範囲なのですが、900を超えませんでした。もっと強い光が必要なのかな。

## 5. リファレンス

* http://www.seeedstudio.com/wiki/Grove_-_Light_Sensor
* https://github.com/Seeed-Studio/Light_Sensor

# CASE2:光センサ値を LED バーで表示する

光センサ値を LED バー 10 段階で表現します。

## 1. LED バーをベースシールドの**D8端子**に接続する

![IMG_20150320_100200-light.jpg](https://qiita-image-store.s3.amazonaws.com/0/68547/714d77db-7d1f-88c9-7cdc-53111f1ede0e.jpeg)


ピンアサインは、下表です。

| Arduino | LED Bar | Color |
|:-:|:-:|:-:|
| GND | GND | Black |
| VCC | VCC | Red |
| D9 | DCKI | White |
| D8 | DI | Yellow |

## 2. LEDバー用ライブラリをインストールする

1. ライブラリをダウンロード  
https://github.com/Seeed-Studio/Grove_LED_Bar  
右の【Download ZIP】を押す。
2. ライブラリを Arduino IDE にインストール  
Arduino IDE の [スケッチ] → [ライブラリを使用] → [ライブラリをインストール…] からダウンロードしたライブラリ ZIP (Grove_LED_Bar-master.zip) を選択し、インストールする。
 * \ドキュメント\Arduino\libraries\ 以下にコピーされる

## 3. スケッチを作成する

仕様を決めます。

* センサ値 100 未満の場合、無灯
* センサ値 100 毎に LED を 1 個ずつ点灯
 * ex) センサ値 300 以上 400 未満の場合、レベル 3 (3個点灯)

```lang:Grove_LED_Bar_with_Light_Sensor.ino
#include <Grove_LED_Bar.h>

#define LIGHT_SIG A0
#define BAR_CLK 9
#define BAR_DATA 8
#define BAR_GTR 0

Grove_LED_Bar bar( BAR_CLK, BAR_DATA, BAR_GTR );

void setup() {
  pinMode( LIGHT_SIG, INPUT );
}

void loop() {
  delay( 1000 );
  int sValue = analogRead( LIGHT_SIG );

  if( sValue<100 )
    bar.setLevel( 0 );
  else if( 100<=sValue && sValue<200 )
    bar.setLevel( 1 );
  else if( 200<=sValue && sValue<300 )
//  bar.setLevel( 2 );
    bar.setBits( 0b000000000000011 );
  else if( 300<=sValue && sValue<400 )
//  bar.setLevel( 3 );
    bar.setBits( 0x7 );
  else if( 400<=sValue && sValue<500 )
    bar.setLevel( 4 );
  else if( 500<=sValue && sValue<600 )
    bar.setLevel( 5 );
  else if( 600<=sValue && sValue<700 )
    bar.setLevel( 6 );
  else if( 700<=sValue && sValue<800 )
    bar.setLevel( 7 );
  else if( 800<=sValue && sValue<900 )
    bar.setLevel( 8 );
  else if( 900<=sValue && sValue<1000 )
    bar.setLevel( 9 );
  else if( 1000<=sValue )
    bar.setLevel( 10 );
}
```

## 3. 動作を確認する

1. Arduino IDE にてコンパイル＆書き込み
2. LEDバーが落ち着いたら、光を当てたり、隠したりしてLEDバーの変化を確認する

## 4. 感想

* 視覚で分かるようにすることで面白さが出る。子供が遊んでしまう。
* 大雑把に変化を確認したい場合に向くように思う。

## 5. リファレンス

* http://www.seeedstudio.com/wiki/Grove_-_LED_Bar
* https://github.com/Seeed-Studio/Grove_LED_Bar