ロータリースイッチの機能を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にもどし
ます。
(1ではだめでした。割込処理を抜けるとき0にします。
if(counter==6){counter=0;}は、swtch文の後です。
割込処理のキーチェックで必ず、1加算されます。)
これをCのプログラムにすると、
みたいな感じになります。実際には、「待ち時間を作る」、
「スイッチが押されたフラグのSWをクリアーする」等の
細かい指示が必要です。
また、もう一つスイッチを使うなら、2→→1、等の逆戻り
もできますが、一つだけの予定なので、このままいきま
す。