Dip_RotaryでLED点灯切換
複数個のLEDの個々の点滅をスイッチで切り替える場合、単極単投スイッチを使うとLEDの個数分のスイッチが必要です。DIPスイッチでも同数の接点が必要になります。ディップロータリースイッチを使用するとスイッチの個数を大きく減らすことができます。このスイッチの中身を調べたうえで、PICと1個のディップロータリースイッチで6個のLEDを切換える単純な回路を作りました。
プログラムの説明
使用したDIPロータリースイッチはKELのKDS10−422で0から9までの2進化10進出力です。スイッチの1・2・4・8がPICのRA0からRA3につながっていますのでスイッチの値をAポートで直接読み込んだものがswitchの式になります。
caseの定数式にはAポートの入力値を、文にはLEDのつながったBポートの出力アドレスを書きます。
switchは、式の値によって分岐させる文で書式は
switch(式){
case 定数式:
文;
break;
になっています。
回路の説明
スイッチの構造
ディップロータリースイッチは右の写真のような外観で今回使用するものは2進化10進出力するものです。底にコモン(c)、1、2、4、8のリード端子が5本出ており、下表のような関係になっています。
列の数字1,2,4,8はスイッチの端子で、行の数字0〜9はスイッチの窓に表示される数字です。○はCと接続されていることを表し、×はCと切り離されていることを表します。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
1 | × | ○ | × | ○ | × | ○ | × | ○ | × | ○ |
2 | × | × | ○ | ○ | × | × | ○ | ○ | × | × |
4 | × | × | × | × | ○ | ○ | ○ | ○ | × | × |
8 | × | × | × | × | × | × | × | × | ○ | ○ |
PICのAポートをDIPロータリーに接続し、Bポートでダーリントントランジスタアレーを通じてLEDを駆動しています。内部クロックを使用していますので、外付けの発振子は使用していません。トランジスタの負荷はLEDと電流制限用の抵抗だけです。貰い物のプリント基板がありましたので、この基板を改造して使用することにしました。LEDは6個に限定されていますが、DIPロータリースイッチの数字に対応した場所のLEDを点灯するようにしました。今回使用したPICは648Aですが、84Aでも可能です。ただ、貰った基板が648Aとして設計されたもので、外部発振回路のないものでしたので84Aが使えませんでした。トランジスタアレーはサンケンのSTA403Aで、Vceo
100V,4W,4A, hFE 1000以上で4回路入っています。完全なオーバースペックなのですが、これもついでに貰いましたので使用しました。ステッピングモーターに最適ではと思っています。勿論、抵抗とLEDを直接ポートに接続できますが、トランジスタアレーを入れることで負荷をLED以外のモーター等にすることもできます。