#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 ); }