C&Kのホイール・スイッチを使えるように作業中。このスイッチに魅了されてしまうのは、ホイールと方向キーが一体化されており、iPodを連想させる点でしょう。やっぱり、グリグリとホイールを回したくなります。もっとも実際には機械式で接点が動作するため「グリグリ」ではなくて「カチカチ」なのですが、そこもまた楽しいところです。
このスイッチですが、下図⬇のように7つのスイッチによって構成されています。S1がセンターのボタン、S2~S5が方向キー、そしてA/Bが回転検出用です。
A/Bスイッチの出力するパルスは図のように位相がずれているため、例えばA側の立ち上がりを検出した時点でのB側の状態がON/OFFのどちらであるかを見れば、ホイールの回転方向を知ることができます。この要領で、当初はA側の変化だけで割り込みをかけて、その時のB側の状態で左右方向のイベントを生成してみました。ところが、この方式だとホイールを1段階「カチ」と回しただけではイベントが生成されず、2段階「カチ、カチ」と回さないとイベントが出ません。
改めて上図をよくよく見てみると、「カチカチ」の刻み音を生じさせるツメ(detent)は24あり、1回転で生じるパルス数は12パルスと書いてありました。そのために2刻みで、イベントがひとつしか生じていないのでした。やはりこれでは操作上違和感を感じるので、再検討。A側の立ち上がりだけでなく、立ち下がりでも検出すれば良いかと考えて、実際に試してみるとイベントが発生されないこともあり動きがおかしい。A側のたちあがりとB側の立ち下がりの両方のタイミングで互いの状態を判別するようにすることで、一刻み毎にイベントが生成できるようになりました。
このスイッチですが、下図⬇のように7つのスイッチによって構成されています。S1がセンターのボタン、S2~S5が方向キー、そしてA/Bが回転検出用です。
A/Bスイッチの出力するパルスは図のように位相がずれているため、例えばA側の立ち上がりを検出した時点でのB側の状態がON/OFFのどちらであるかを見れば、ホイールの回転方向を知ることができます。この要領で、当初はA側の変化だけで割り込みをかけて、その時のB側の状態で左右方向のイベントを生成してみました。ところが、この方式だとホイールを1段階「カチ」と回しただけではイベントが生成されず、2段階「カチ、カチ」と回さないとイベントが出ません。
改めて上図をよくよく見てみると、「カチカチ」の刻み音を生じさせるツメ(detent)は24あり、1回転で生じるパルス数は12パルスと書いてありました。そのために2刻みで、イベントがひとつしか生じていないのでした。やはりこれでは操作上違和感を感じるので、再検討。A側の立ち上がりだけでなく、立ち下がりでも検出すれば良いかと考えて、実際に試してみるとイベントが発生されないこともあり動きがおかしい。A側のたちあがりとB側の立ち下がりの両方のタイミングで互いの状態を判別するようにすることで、一刻み毎にイベントが生成できるようになりました。