色センサーTCS34725

tcs34725.jpg

製品情報

ピン配置

文字が見える方向で、左から

ピン名称説明
LED照明用LED ON/OFF
INT割り込み
SDAI2Cデータ
SCLI2Cクロック
3V3
GNDGround(0V)
VIN電源

なお、I2Cのアドレスは、0x29である。

接続

SDAArduinoのA4へ
SCLArduinoのA5へ
GNDArduinoのGNDへ
VINArduinoの5Vへ

下記のプログラム例のようにsetInterrupt()でLEDをON/OFFするには、LEDとINTを結ぶ。

プログラミング

ライブラリ Adafruit_TCS34725-master.zip

プログラムの先頭の方(setupより前)に以下を記述する。

#include <Wire.h>
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);

このうち、3行目がセンサーの動作を設定している。 TCS34725_INTEGRATIONTIME_50MSの部分は、測定にかける時間を設定していて、50MSは50msを表す。その他に、2_4MS(=2.4ミリ秒), 24MS, 101MS, 154MS, 700MSから選べる。時間が大きいほど細かく測定できる。TCS34725_GAIN_4Xの部分は測定値を何倍するかを表す。4Xは4倍を表す。その他に、1X, 16X, 60Xを選べる。 setup内には、

tcs.begin()

を書く。loopでは、

tcs.setInterrupt(false);

でセンサーのLEDを点灯し、

tcs.getRawData(&red, &green, &blue, &clear);

で色を読み取れる。ただし、red, green, blue, clearはuint16_t型の変数であり、

uint16_t red, green, blue、clear;

で定義されているものとする。clearは可視光全体の強さを表している模様。

 tcs.setInterrupt(true);

でセンサーのLEDが消灯する。以下の例は色センサーの読みをシリアルモニタに表示する。

#include <Wire.h>
#include "Adafruit_TCS34725.h"

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS,  TCS34725_GAIN_4X);

void setup() {
  Serial.begin(9600);
  Serial.println("Color View Test!");

  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1); // halt!
  }
}


void loop() {
  uint16_t clear, red, green, blue;

  tcs.setInterrupt(false);      // turn on LED

  delay(60);  // takes 50ms to read 
  
  tcs.getRawData(&red, &green, &blue, &clear);

  tcs.setInterrupt(true);  // turn off LED
  
  Serial.print("C:\t"); Serial.print(clear);
  Serial.print("\tR:\t"); Serial.print(red);
  Serial.print("\tG:\t"); Serial.print(green);
  Serial.print("\tB:\t"); Serial.print(blue);
  delay( 500 );
}

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS