ツレがもらってきたゆず?でゆず湯な2011年の冬至の夜でした。
Lチカ リース ちとバージョンアップ
ツレがLEDリースのブレッドボード部分が目立たないように目隠しの飾りをつけてくれた。ありがとん。ただ、照度センサーのCDS部分が埋もれてしまって、このままでは明日の昼間の判定が出来ずに夕方点かないままになってしまう。で、リードを切っていないCDSと交換して対策しました。多分大丈夫でしょう。駄目なら夜に電源入れなおせばOKだし。
dotsduino
「なんでも作っちゃう、かも。」さんとこのdotsduinoキットを販売委託先のスイッチサイエンスさんでお買い上げ。基板のバージョンは1.2dでした。
昨日届いていたのだけど、本日会社から帰宅後にはんだづけして組み上げ。ArduinoIDEでのboardは「Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328」でOKでした。ってかそれ以外にしてたら妙なエラーが出て困ったズラ。
やっぱ専用?に作られた基板は綺麗だし、ぴったりと8×8ドットLEDの裏にハマるし。シリアル接続用の6ピンヘッダは80度くらい曲げてみました。1個問題点があって、付属の単4アルカリ電池3本のボックスの終端についてる端子。そのままではグランドとVCCに刺さらんのだな。3端子の両端だったら良かったのに。こういう圧着?端子はどこで買うのが良いだろうか?
イルミLED追加とプログラム修正
ツレの要望があったので、赤色LEDを2つ追加してみた。午前中にLED工作をして、リースに配線。動作確認はしなかったのだが・・・。
夕方点灯したのをみてみたら、赤が点くと青が点かない。楽して既存の青色LEDと並列に赤色を入れたのだが・・・。赤は低ボルトで光る為、それに引っ張られて並列につながってる青が点かなくなってしまった。手抜きをして、ちゃんとアノード側にそれぞれ抵抗を入れてる訳では無く、まとめて1個の抵抗(1KΩ)をカソード側に入れてたりするので(苦笑)。
手っ取り早く全てのLEDを光らせるには・・・。プログラムを書き換えました。ATmega168Pのpwmポートは6つあって、今のところ4つ使っているのでフル使用に変更。プログラムは汎用化(?)してあったので、追加の2ポートのpin番号の指定と、総LED数の指定でOK。
ってか、総LED数の指定なんかしたくないのだが、ArduinoのC環境にfor each無いし、uboundみたいな書き方がわからんかったので。sizeof(配列)/sizeof(配列の規定変数タイプ) ex(sizeof(array)/sizeof(int))で取れそうな気はしているが試してない。
後記。sizeof(array) / sizeof(array[0])で行けるみたいですね。
ついでなので、CDSの観測待ち時間をちょっと多めに変更して。更に、起動時に全てのLEDを1500ミリ秒置きに順に点けていって最後に全部消す処理を追加。まぁ、こんな感じで大丈夫でしょう。PWM使っているとはいえLED1個20mAとすると6個で120mAだもんなぁ。これもあってデジタルマルチメータを今夜発注しました。サンワは高かったのでマザーツールの奴。
LEDイルミのお値段
ATmega168P x 1 (200円)
CDS x 1 (25円)
LED x 4 (40円)
セラコン x 4 (40円)
電解コン x 1 (10円)
抵抗 x 3 (3円)
ブレッドボード x 1 (150円)
電源レギュレータ x 1 (50円)
電池ボックス x 1 (50円)
電池スナップ x 1 (20円)
計 588円
あと、電線とピンヘッダくらい。
ブレッドボードを使わずに生基板や空中配線にしたり、レギュレータ使わずに電池直結にすればもちっとお安くなります。
リースLED(仮)完成
ソフト的には完成したLEDチカチカを玄関扉のリースに仕込みました。ハード的には、電池が見えてるとツレからクレームが出た点と、LEDの別色の追加を考え中。
ソフトの仕様は、CDSで明るさを定期観測して、3回以上連続した観測で暗かった場合はLEDを点灯するモードに入る。点灯モードに入ってから300分たったら消灯。また、5回以上連続して明るかったらLEDを消灯し、CDSでの明るさ観測をロングスパンに変更して電池節約。ってな感じのソフトです。 明るいの連続5回を経過しないと「300分たったら消える」はリセットされない仕組み。夜に門灯をつけると一旦消えるものの、300分の時間内ならまた点灯を開始します。