ロータリースイッチの機能を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、等の逆戻り
もできますが、一つだけの予定なので、このままいきま
す。
AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
小林電機さんですか…前言(ショーティングタイプを売っているの?)撤回しますm(_._)m
たしかに測定器やアンプなどに使おうとするとショーティングタイプですよね。
良く調べたらマルツにも両タイプ有りました。ノンショーティング\”タイプとしては、秋月の \”ロータリースイッチ(2回路6接点)[RS-2688-0206-38N] 通販コード P-00101\” が\\150と激安ですね。
AGENT: Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
oldmanさん、こんばんは。書き込みありがとうございます。
問い合わせに、明快なお答えありがとうございます。弱電関係もまだまだで、分からないことだらけです。
ロータリースイッチを購入しようと思い、スマホで検索していたら、真っ先に、
http://cobaden.net/?mode=srh&cid=&keyword=%A5%ED%A1%BC%A5%BF%A5%EA%A1%BC%A5%B9%A5%A4%A5%C3%A5%C1&x=45&y=9
が飛び込んできて、考えてしまった訳です。
どうもワイヤードロジックは苦手です。ご紹介いただいたICもちょっと、勉強してみようと思います。これらのIC使えれば、いろいろ幅が広がるでしょうね。
私には、ちょっと、未知なる分野です。
スパム対策で、記事が保留になっていて、気がつくのが遅くなりました。URLが複数記載されると、保留になるようです。
AGENT: Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
猛牛ロックさん、追伸です。
>ローテーションはしないで何度かの適当な連打でホームポジション(1)に送って、
>そこから数えながら2,3と変えていくのが好みですね。
この方が、使い勝手はいいかもですね。今回は、ロータリースイッチの肩代わりということで、考えてみました。
後戻り、できない、ロータリースイッチです。(笑)
長押し、ダブルリック?等判定するとなると、プログラムが面倒なので、シンプルにいきました。
AGENT: Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
猛牛ロックさん、こんばんは、書き込みありがとうございます。
さすが、猛牛ロックさんです。このままでは、カウンターの6がひっかからないよな、
なんて思いつつでした。
それに、割り算のあまり、っていう手もありでしたね。これだと、if文もいりませんね。
一回の電源ONで、何千回も切り替えをすることは、まず、ないでしょうから、
上限の制限をしなくても、オーバーフローすることはないかもですね。
アドバイスありがとうございます。一通りうごいたものを、もう少し後で、アップします
AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
こちらにコメントさせて頂きます。
・ロータリースイッチは\”通常?\”はノンショーティングです。
ショーティングが使われるのは(私の知る限り)抵抗を並べて作る高級アッテネーターとテスターの内部位じゃないでしょうか。ロジック(IC)の世界では、\”トーテムポール出力(ググッてみてください)\”が大多数で、一部のインターフェースICのみが出力同士をつないでも大丈夫なオープンコレクタタイプです。と、言うことで通常は\”ノンショーティング\”タイプを買っておけば汎用性が高いと思います。
そもそも、ショーティングタイプが一般的に販売されているの? ( 参考リンク:http://0r.com/rs/ )
・切り換え器の方式について
忘れないための勉強も大事ですが、ワイヤードロジックの方が物量が少ないかも…。
共立エレショップに以下のIC類が売っています(残念ながら東京のお店にはありませんでした)。
(1)のカウンターICの下2桁を、(2)または(3)のICの入力にすると1~4の何れかがLowになり、この信号を使って(4)の各ラインを on/off制御すれば パルスジェネレータからの信号を振り分けられます(upボタンとdownボタン、表示用のLEDなどは別途)。
(3)だと clock, directionの両信号をひとつのICで扱えますが、(2)の方が8ポジションまでの拡張性がありますね。どちらを使うかは好みでお決めください。
(1) 74HC193 DIP:SYNCHRONOUS UP/DOWN BINARY COUNTER ( http://eleshop.jp/shop/g/gT11522/ )
(2) 74HC138:3-LINE TO 8-LINE DECODERS/DEMULTIPLEXERS ( http://eleshop.jp/shop/g/gT11496/ )
(3) 74HC139 DIP:DUAL 2-LINE TO 4-LINE DECODERS/DEMULTIPLEXERS ( http://eleshop.jp/shop/g/gT11498/ )
(4) 74HC125 DIP:QUADRUPLE BUS BUFFER GATES WITH 3-STATE OUTPUTS ( http://eleshop.jp/shop/g/gT11490/ )
AGENT: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; GWX:DOWNLOADED)
もう一点。
> もう一つスイッチを使うなら、2→→1、等の逆戻り
「長押し」を区別すると付けなくてもいけますよ。
実際の使い勝手がどうなるかは未知数ですが。
私としては、何も見ないで操作したいので=現在の状態が判らなくなったりするので、
ローテーションはしないで何度かの適当な連打でホームポジション(1)に送って、
そこから数えながら2,3と変えていくのが好みですね。
AGENT: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; GWX:DOWNLOADED)
なるほど。5以上に割り当てて1から6のローテーションさせるのですね。
勉強になりました。今度この手を使ってみます。
> カウンターが6になったら、1にもどし
となっていますけど7なら1にするですよね。
掲載の文では12345123となりますよ。
counter++;
if(counter==7) counter=1;
とシンプルな表現が良いんじゃないですか。
1行なら↓の書き方で。
if(){
counter=counter%6+1;
switch(){
case 1:
();
break;
case 2:
case 6:
();
break;
case3:
case5:
();
break;
case4:
();
break;
}
}
AGENT: Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
TRさんおはようございます。書き込みありがとうございます。
単に、切り替えをするだけのプログラムです。ロータリースイッチの方が、お手軽だと思います。
今回ロータリースイッチにしなかったのは、手パに使われているロータリースイッチの種類(ショーティングかノンショーテグ)が不明だったことと、PICのプログラム、時々しないと忘れてしまうからです。
ロータリースイッチは、oldmanさんが書き込みしてくださったので、お聞きしてみました。
AGENT: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
maboさん、おはようございます。
物凄い仕掛けですね!!
各軸の切り替えと減速率を変えるには、こういった仕掛けが必要なんですか?
むずそう!!
手パ~ロータリースイッチ~SS基板というわにはいかないのですか?幼稚で済みません。