#author("2018-05-23T16:03:34+09:00","default:qua","qua")
* 色センサーTCS34725 [#tc494022]
#ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/tcs34725.jpg,240x180)
[[製品情報:http://akizukidenshi.com/catalog/g/gM-08220/]]
** ピン配置 [#ff96d9ea]
文字が見える方向で、左から
|ピン名称|説明|
|LED|照明用LED ON/OFF|
|INT|割り込み|
|SDA|I2Cデータ|
|SCL|I2Cクロック|
|3V3||
|GND|Ground(0V)|
|VIN|電源|
なお、I2Cのアドレスは、0x29である。
** 接続 [#w57f4103]
|SDA|ArduinoのA4へ|
|SCL|ArduinoのA5へ|
|GND|ArduinoのGNDへ|
|VIN|Arduinoの5Vへ|
下記のプログラム例のようにsetInterrupt()でLEDをON/OFFするには、LEDとINTを結ぶ。
** プログラミング [#z811fbc3]
#author("2019-04-21T23:37:59+09:00","default:qua","qua")

ライブラリ
[[Adafruit_TCS34725-master.zip:http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/lib/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