2008.5.4
2010.12.28追記4ピン で LED 10個を制御するフラッシャ
8ピン PIC12F675の4ピンで10個のLEDを点灯させるフラッシャの実験。 元ネタは、microchip社のアプリケーションノート TB029 Complementary LED Drive(PDF) です。
主要部品は、PIC12F675 と 10バーLEDアレイ、いずれも秋月で120円。PIC12F675はIOピンが6ピンあるが、一つは入力専用なので出力に使えるのは5ピン。
アプリケーションノートにあるように5ピン使うと20個のLEDを点灯できるが、今回はLEDアレイが10バー1個なので4ピン使用。4ピンでも最大12個のLEDを繋げられる。
少ないピンで多数のLEDを点灯させる原理は、点灯させたいLEDが繋がるピンのI/O属性のみを「出力」にし、他は「入力」にしてしまうこと。同時には1個のLEDしか点灯できない。
回路はアプリケーションノートのまま。プログラムはコレ。無保証です。
プログラムはアプリケーションノートにあるようにI/O属性の設定と、出力ピンをHighにすることで特定の1つのLEDを点灯させる。さらに、それをダイナミック点灯させ、残像現象で同時に複数のLEDが光っているように見せている。
実験なのでフラッシャのパターンは簡単なもの。以下、4パターンとバイナリカウンタの繰り返し。
- 右から左へ流れる
- 左から右へ流れる
- 外側から中央へ流れる
- 中央から外側へ流れる
- 10桁のバイナリカウンタ表示(速いので下位の桁は点灯しっぱなしのように見える)
10個のLEDのダイナミック点灯なのでデューティ比は10%になる。回路図の抵抗をもう少し小さくして輝度を上げたほうがよいかも。
以下、動画です。
入力ピンが残っているので、スイッチで表示を切り替えたりできる。入出力ピンも1ピン余っているので何か他のものを制御することも可能。そのうち、何かに組み込みたい。
2010.12.28本ページを見て頂いた方とメールでやり取りし、フラッシャの左右の流れ制御と、スピード制御ができるようにしたものを作ってみました。
スピード制御は、可変抵抗で分圧した電圧をPIC12F675のA/D変換で測定して、電圧値に応じてLED点灯のウェイト時間を変えて制御しています。電圧が0Vに近い(約0.2V以下)時には、フラッシュを停止。また、A/D変換を使うためにピンアサインが上記の回路と違います。
![]()
プログラムはコレです。無保証です。
以上