ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

RGB LED 12個で12色の色を作ってみた

2012年07月20日 21時19分44秒 | 電子工作
秋月で買った4本足のRGB LEDを12個と
12bitのPWMが簡単に出力できるTLC5940 3個を使って、
色を作る実験です。

製作は長めのブレッドボードにLEDとTLC5940を並べます。


点灯してみました。


例えば、オレンジ色ですが、赤と緑の合成で得られる黄色と、
赤の中間色になりますが、単純に計算でPWM値を設定してもうまくいきません。

実際に色を見ながら加減しないといけません。
この場合、加減する値が粗いと狙った色を出すのが難しくなります。
今回使用したTLC5940だと、Arduinoのライブラリがあるので、
すごく簡単に12bit 4096段階のPWMでコントロールすることができます。

実は、これで加減した値を使って、粗いPWMの値を探ろうと考えています。
ま、半分仕事のようですが。

で、動かしてみました。
明る過ぎるので、途中でカメラの前にスモークの2枚重ねを入れています。


意外と、青を出すのが難しいです。
そのまま、青だけを点灯させると、他の色に比べて暗く感じてしまいます。
それで、上の実験では、赤や緑も少し光らせて明るい青色を演出しています。

組込みマイコンデバッグの小ワザ

2012年07月20日 01時37分04秒 | 組み込みソフト
組込みマイコンのデバッグには、もちろんデバッガを使用します。
でも、いつでもデバッガが使えるとは限りません。
個人の場合は、デバッガを用意することすら大変です。

そう言う場合、ちょっとした事でデバッグの助けになる小ワザを紹介します。

と言っても、大した事はしません。
マイコンの余っているポートにLEDと抵抗を付けておくだけです。

それだけ?小ワザですからね。
でも、ただLEDを点けるだけじゃありません。

プログラムの通過を確認するためにLEDを点灯させる訳ですが、
大抵の人は、
 port1 = 0x7F;
なんて、書いてしまいます。
これでは、通過したことは分かりますが、
何度も通過する場合は、2度目以降の確認が出来ません。

そこで、こういう風に書きます。
 port1 ^= 0x80;
つまり、LEDのビットを反転させる訳です。

時々通過するくらいの頻度なら、LEDが点滅するので、
それが分かります。

もちろん、確認したいブロックの始めで点灯、
終わりで消灯する手もありますが、
上の方法だと、1行で済みますからね。

しかも、同じポートの他のビットへの影響も有りません。

この手は意外と役に立ちます。
リルタイムに反応が見えるのでデバッガを使うより良いかも知れません。

もし、オシロが使えるなら、チェック端子を実装しておくと良いですね。



え?
LEDを付けるなんて、知ってるよ!
1ビットしか確認出来ないじゃん!
回路はもう出来上がっていて、LEDもチェック端子も付けられない場合はどうするんだ!
はいはい、いろいろな突っ込みが来そうなのは、十分承知しています。



そう言う場合は、スイッチを接続している端子を使います。



え?
入力端子でしょ?
スイッチが付いてるんだぜ?
はいはい、いろいろな突っ込みが来そうなのは、十分承知しています。
これについては、次回説明します。