概要

物体の光の反射率を測定するフォトリフレクタは、発光素子と受光素子が配置されていて光を物体に反射させてその強度を測定することで、物体の存在確認や白黒パターンの検出などをすることができます。

光を検出できるセンサーは色々な種類がありますが、例えば商品パッケージの色を判別したい時など、光の輝度だけではなく色も判別したい場合は、3色に分解して輝度を計測できるカラーセンサーを用いることをおすすめします。

Arduinoでカラーセンサーを使用

 

本記事では、スイッチサイエンス社のBH1745NUC搭載のカラーセンサーを使用してみました。Arduinoで動作させるために必要なライブラリやサンプルコードが提供されており、一瞬で動作確認まで行うことができたのでとてもおすすめです。

基盤のColor Sensorと記載されている部分が実際のセンサー部分となります。

カラーセンサー

Arduinoとの配線

配線は非常に容易で、SCL / SDA / 3.3V / GNDをそれぞれArduino、カラーセンサーに接続するだけで大丈夫です。

Arduino接続

ライブラリのダウンロード

Arduinoでセンサー情報を読み取るためにスイッチサイエンス社が提供している下記ライブラリを使用しましょう。

Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」を選択後、ダウンロードしたzipファイルを選んでインストールをしましょう。

サンプルコードの実行

続いてArduinoのコードを書いていきますが、サンプルコードが用意されているので、これを用いましょう。

 

#include 
#include 

/* #define BH1745NUC_DEVICE_ADDRESS_38            (0x38)    // 7bit Addrss */
/* #define BH1745NUC_DEVICE_ADDRESS_39            (0x39)    // 7bit Addrss */

BH1745NUC bh1745nuc(BH1745NUC_DEVICE_ADDRESS_39);

void setup() {
  byte rc;

  Serial.begin(115200);		/*  Modify : set the serial speed to 11500 kbps  */
  while (!Serial);
  
  Wire.begin();
  
  rc = bh1745nuc.init();
}

void loop() {
  byte rc;
  unsigned short rgbc[4];
  
  rc = bh1745nuc.get_val(rgbc);
  if (rc == 0) {
    Serial.write("BH1745NUC (RED)   = ");
    Serial.println(rgbc[0]);
    Serial.write("BH1745NUC (GREEN) = ");
    Serial.println(rgbc[1]);
    Serial.write("BH1745NUC (BLUE)  = ");
    Serial.println(rgbc[2]);
    Serial.write("BH1745NUC (CLEAR) = ");
    Serial.println(rgbc[3]);    
    Serial.println();
  }
 
  delay(500);

}
 

 

0.5秒おきにRGBごとの計測された輝度値が表示されるようになっています。それぞれ、最大65,536の数値が返却されるようになっています。 

シリアルモニタ

チップとしてはROAM社のBH1745NUCというチップを使っており、データシートは下記になります。

データシートによると、RGBそれぞれの敏感度が異なっていて、緑→赤→青→透明という順に敏感度が高い(数字が大きくなりやすい)ので、これを考慮した上で、閾値などを設定していくと良いでしょう。

色敏感度

ArduinoI2cセンサー

Related Posts

ArduinoのpulseInで割り込み処理ができるようにする
ArduinoのpulseInで割り込み処理ができるようにする
概要 超音波センサーHC-SR04等を用いてArduinoで距離計測を行いたいときに、Trigピンで超音波を発生させた後にEchoピンで、超音波が反射されてくるまでの時間を計測することで距離を計測できます。その際、pulseInという...
Read More
DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
概要 DCモータを動作させる際は、モータコントローラを用いると便利ですが、それでも複数のモータを動作させようとしたときには配線がごちゃごちゃになってしまいがちです。そのような時は、シールドタイプのDCモータコントローラを使えば、マイコ...
Read More
Arduino Nano互換ボードで書き込めない時はプロセッサを確認
Arduino Nano互換ボードで書き込めない時はプロセッサを確認
概要 安価なArduino Nano互換ボードを使っていると、Arduino IDEで書き込みができずにエラーになってしまうことがあります。本記事ではその対処法について解説をします。 対処法 書き込み時にエラーが出る原因はさまざまな...
Read More