---手パ(手動パルスジェネレーター)切り替え器制作(2)---

 ロータリースイッチの機能をPICに分担させるのに、ちょっと
 工夫します。
 ロータリスイッチの場合隣り合った数字の移動しかできません。
 4接点だと4までの隣同士の数字にしか移動できません。
    1←→2←→3←→4
 1→→4はできません。
 スイッチ一つをPICに分担させると、ダブルクリック等の技を
           (「長押し」も可のアドバイス受けました。)
 検出しないと逆戻りをさせることはできませんので、次のよう
 にします。
 スイッチが1回押されるとカウンターを1加算するようにします。
 一方参照テーブルは、
   1←→2←→3←→4←→3←→2
 のように、6個作っておきます。
 このテーブルにカウンターを次のように割り当てます。
   1←→2←→3←→4←→3←→2
   ↓  ↓  ↓  ↓  ↓  ↓
   1  2  3  4  5  6
 こうすることで、カウンターを加算することで、常に隣の数字
 に移動ができます。カウンターが6になったら、にもどし
 ます。
 (1ではだめでした。割込処理を抜けるとき0にします。
  if(counter==6){counter=0;}は、swtch文の後です。
  割込処理のキーチェックで必ず、1加算されます。)

 これをCのプログラムにすると、

 

 みたいな感じになります。実際には、「待ち時間を作る」、
 「スイッチが押されたフラグのSWをクリアーする」等の
 細かい指示が必要です。
 また、もう一つスイッチを使うなら、2→→1、等の逆戻り
 もできますが、一つだけの予定なので、このままいきま
 す。

---手パ(手動パルスジェネレーター)切り替え器制作(1)---

 低価格の手パ(手動パルスジェネレータ=MPG)を購入しようと
 思いましたが、手持ちのジェネレーターがあるので、切り替え器
 と組み合わせて、ケースにいれてみようと思います。
 ロータリースイッチを使おうと思いましたが、忘却防止のため、
 手持ちのPIC(16F88)を使って、切り替え器を作ります。
 軸の切り替えに一応4(X,Y、Z、4)出力。スピード?の切り替え
 に3(1倍、10倍、100倍)出力。これだけで、7ポート7線です。
 ロータリースイッチ使うと、同じ数だけポートが必要ですので、
 跳ね返りスイッチ2個をそれぞれの切り替えにわりあて、
 出力は、プログラムで処理します。
 入力COMMONを入れて、合計で
 9ポート8線ですみますので、多少余裕があります。
 それぞれの出力にLEDの表示もしますので、PICから直接
 ドライブすると出力電流がオーバーしそうなので、今回、
 トランジスタアレイ(ダーリントンドライバー)を使うことにし
 ました。TD62004APGを使います。多少大げさな選定だと
     (選定を間違ったようです。正解はTD62003でしょうか)
 思いますが、大は小を兼ねる?でやって見ます。
 細かい数値の意味の読み取りができないので、困ります
 が、まあ、トライアンドエラーで、いつもの通りやって見ます。
  PIC→TD62004APG→フォットカプラー→SS
             |
             →LED
 の構成で考えます。
 このTD62004APGは、優れもので、内部に抵抗があります
 ので、PICの出力を直接接続できるようです。

 

 7チャンネルなので、今回の目的にちょうどです。
 昨日、今回は他にもほしいものがあったので、○ツに注文
 しました。肝心のカプラー忘れました。
 それと、多芯ケーブルをどうしましょうかね。
 7芯+電源+グランド等で、9芯のものが最低でも必要です。
 ○タロウのロボットケーブルは、30Vの10芯2mで、
 2600円程度します。ケーブルが一番高いです。
 PICのプログラムは、一定時間ごとに割込をかけて、二つ
 のスイッチの判定をして、それに応じて、出力を順次切り
 替えればいいので、それほど難しくはないかなと思います。
 さて、また、PICの復習からでしょうか。