光を受けたら自分も光るデバイス
↓これ見て作りたくなった。
光を受けると自分も光り、その光が周りに連鎖していくデバイス。
シンプルだけどすごくキレイ。
自分で作ってみたものは以下。
上記サイトの下の方に中身の写真がある。これと記事から推測。
3方向にCDSセルとLEDチップ。
真ん中にブザーが1つ。光る時に音を鳴らしてる。
ボタン型電池は1つ3Vで2個。
ATtiny24Aというマイコン。
その他トランジスタとか。
CDSセルはarduinoの入門セットにもついてるくらいだから簡単だし、
LED光らせるのも簡単だからなんとかなるかなと。
というわけで作りました。
作ったやつの中身。
本物は3方向にCDSセルとLEDがあるけど、面倒なので2方向に。
半田づけも面倒なので最小限に。
ブレッドボードの小さいのがちょうどいい大きさだったのでそれをベースにした。
<パーツ>
PIC12F683
角型チップLED x2
CDSセル x2
ボタン型電池CR2032 x2
ボタンケース x2
ミニブレッドボード
16ホールユニバーサル基板
トランジスタ2SC1815Y
あと抵抗とか。
- 出版社/メーカー: Umemoto
- メディア: エレクトロニクス
- この商品を含むブログを見る
入れ物を3Dプリンタで作成。
電池つけて中に入れる。
パカッとフタを閉める。
5個作って力尽きたけど、たくさん作ればキレイになるはず。
<マイコン>
arduino使うと大きくなっちゃうしお金もかかるのでPICを使う。
初めてだったので全く分からなかったけど適当に試行錯誤してたら動いた。
最初PIC16F88を使ったけどそんなにピン要らないし、ちょっと場所取るし、お金もかかってきちゃうので途中から小さいPIC12F683に変更した。
ちなみに安かったからPIC12F629も買ったんだけど、これは使いたい関数が使えなかった。。
PICへ書き込むプログラムはmikroCでC言語で。
以下ソース。
void main() { unsigned short int i; unsigned int val; unsigned int in1,in2; int flag = 0; OSCCON.IRCF2=1; OSCCON.IRCF1=1; OSCCON.IRCF0=1; ANSEL.ADCS2=1; ANSEL.ADCS1=0; ANSEL.ADCS0=1; ANSEL.ANS1 = 1; ANSEL.ANS3 = 1; GPIO = 0b00000000; TRISIO = 0b00010010; val = 0; do { in1 = ADC_Read(ANS3); in2 = ADC_Read(ANS1); if (in1 >= 500 && in2 >= 500) { GPIO.F2 = 0; Delay_ms(100); flag = 0; } else { if (flag == 0) { flag = 1; Delay_ms(50); GPIO.F2 = 1; Delay_ms(100); GPIO.F2 = 0; Delay_ms(1000); } } } while(1); }
これ以外にプロジェクト設定でMCLRをDisabledにしたかな。
「ADC_Read」というのがPIC12F629では使えなかった。
「in1」は照度センサーからの入力で大きいほうが暗い。
500という数字は何パターンか試してこの値がうまくいったというだけ。
PICへの書き込みはPIC Programmer V4で。
- 作者: 後閑哲也
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/20
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 32回
- この商品を含むブログ (9件) を見る