カメレオンランプを見かけたので簡易な構造で作ってみることにしました。カメレオンの形状の作成は
面倒なので、100均のタッチランプを使って,出来るだけ簡易に作ることにしました。
カラーセンサーTCS3472(照射用のLED付)をアリエクスプレスで購入(約175円)し、LED STRIP14個を
ランプとして使い、タッチランプをカラー紙の上に置くとカラー紙の色と同じような色に光るようにしました。
ランプの表側: 側面にプッシュロックスイッチを取り付けています。
ランプの裏側: カラーセンサーTCS3472をセットしてあります。
LEDストリップの取り付け
横からの写真
完成したカメレオンランプの起動動画です。
撮影カメラのホワイトバランス等を調整していませんので、ランプの色が見た目の色と動画の色が違って見えます。
下記に回路図を表示しておきます。
電源はタッチランプについている単三電池4個をそのまま使用し、側面に穴をあけ電源用の
プッシュロックスイッチを取り付けています。

下記にプログラムを掲載しておきます。
ライブラリーに「Adafruit_TCS34725.h」と「Adafruit_NeoPixel.h」をインストールしておきます。
#include <Wire.h>
#include <Adafruit_TCS34725.h>
#include <Adafruit_NeoPixel.h>
#define numpixels 14
#define LED_PIN 3
byte gtable[256];
/* Conect SCL to A5
Conect SDA to A4
Conect VIN to 3.3V DC
Conect GND to Common GND */
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
//オプションの積分時間とゲイン値を使用してTCS34725センサーを宣言します。
//センサーからのカラーサンプルの積分時間を50msに設定。センサーの感度を制御するためにADCのゲインを2xゲインに設定。
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numpixels, LED_PIN, NEO_GRB+NEO_KHZ800);
void setup() {
tcs.begin();
//TCS34725カラーセンサーを初期化します。
strip.begin();
for (int i = 0; i < 256; i++){
float x = i;
x /= 255;
x = pow(x, 2.5);
x *= 255;
gtable[i] = x;
}
}
void loop(){
float r, g, b;
delay(60);
tcs.getRGB(&r, &g, &b);
//センサーの赤、緑、青のセンサー出力を読み取ります。
for(int i = 0; i < numpixels; i++){
strip.setPixelColor(i, strip.Color(gtable[(int)r], gtable[(int)g], gtable[(int)b]));
}
strip.show();
}