#FFFFFF | #808080 |
#C0C0C0 | #000000 |
#FF0000 | #800000 |
#00FF00 | #008000 |
#0000FF | #000080 |
#FFFF00 | #808000 |
#FF00FF | #800080 |
#00FFFF | #008080 |
まず、色センサーの動作を確認するため、基準となるカラーチャートを作成した。上図のように3原色(RGB)の明るさを16進で表して、#FFFFFFは白、#FF0000は赤、#000000は黒となる。また#FFFF00は黄色、#FF00FFはマゼンタ、#00FFFFはシアンで絵の具の3原色となる。また、#FFではなく#80(明るさが半分のもの)のカラーチャートや、明るさの異なる灰色(#C0C0C0と#808080)のカラーチャートも作成した。これをインクジェットプリンタ用の光沢紙に印刷する。
さて、色センサーをこのカラーチャートの上にかざして、測る。うーん。違うなぁ…
赤はそこそこの値が得られるが、緑と青が期待どおりの値を示さない。どうも緑のカラーチャート上でも青のカラーチャート上でも同じような感じである。??????????
これで3日は悩んだね。(まあ一日中やっているわけではないが。。。)
ネットを調べていたら、白色LEDは青色LEDに蛍光体をつけたものと3色のLEDをひとつのパッケージにいれたものがあることがわかった。
http://techon.nikkeibp.co.jp/NE/1996/960923/report2.htm
そうか!色成分がないんだッ!!
で、照明用の白色LEDを、3色のLEDに変更した。ところが、3色のLEDの発光点が同じ場所でないので、同時に3色を点灯しても、完全な白には見えない。(明るさは電流制限抵抗で調整している)やれやれ、それでは赤を測定するときは、赤のLEDを点灯させる。というように、測定する色に応じた色の照明をすることにした。そうすると、PICのIOが足りなくなる。あと3bit必要だが、12F629ではもうIOが残っていない!!
しかたないねぇ、PICを18Pの16F648Aとして基板を作り直した。
で、今度は? うーん、まあそれっぽくなったかなぁ。でも絶対値(最大測定値は12kHzのとき)が赤、緑、青で大分ちがう。この数値のみで色の判断はとてもできそうもないなぁ。。。
そうか!白を計ってレファレンスとし、その値からどれだけ違うかを表示をすれば判りやすいだろう。相対値というわけね。
というわけで「色センサーの憂鬱3」に続く。。。。