ガウジングとペダリングボタンVim

ガウジングボタンについて最初に聞いたのは2005年です。 このデバイスの本質は、カーペットの下に隠れたボタンを押すと、モニターのすべてのウィンドウが最小化され、突然現れたシェフがあなたが実際に仕事で何をしているかが見えなくなることでした。 その後、プログレッシブユース向けのファッショナブルなガジェットとして位置付けられました。



そのため、 「Pedaling Vim」の記事ではない場合、それは記憶の深さにあります。 そして、テーブルの上には、ソフトウェアを保護するためにリリースするAT90USB162のハードウェアキーがいくつかありました。







そして、私はユニバーサルペダルの私のバージョンを作成することにしました。 はい、ペダルを押すことと放すことの両方の組み合わせを送信することが可能でした。 量に関しては、これまでのところ、押すと連続して3つ、リリースすることで最大3つの組み合わせに制限することにしました。







したがって、キーにはボタンの下に追加のパッドがありませんでした。 例外は、USB経由でファームウェアの通常のブートローダーを起動するために必要なリセットボタンとHWBボタンです。 はい、プログラマーは不要です。AtmelFlipプログラムのみが必要です 工場出荷時のすべてのチップは、標準のブートローダーでフラッシュされます。



リセットは決して使用できませんが、通常モードのHWBは単なるPD7ポートであり、必要に応じて使用できます。 公平に言うと、ペダルの数に制限はありません。 中国ボードを変更したり、 完成したボードを購入したりする場合、ペダルの数を20個に増やすことができます(「中国語」には21個のパッドがあります)。



ちなみに、上記のテキストでは、将来のコメントの3つの質問への回答:



1.なぜAVRなのか?

2.なぜアルドゥイナではないのですか?

3.なぜボタンが1つだけなのですか?



そのため、AT90USB ***シリーズMKのHIDキーボードのAtmelの例が基礎として採用されました。 これはapn「 AVR271:USB Keyboard Demonstration 」( ここでは翻訳 )で詳しく説明されているので、ここでは詳しく説明しません。 この例はGCCとIARの両方でコンパイルできます。IARバージョン6.3.3.1990を使用しました。



ペダルの踏み込みを処理するために割り込みは使用されません-アンチバウンス遅延があっても、単純なポーリング速度で十分すぎることがわかっています。 すべての有用な作業(ポーリングと要求の送信)はkeyboard_task.cファイルで行われます。 関数kbd_test_hit(); HWB(PD7)の1つのボタン(ペダル)が押されたり、離されたりすることを確認し、keyboard_task(void)は生成されたリクエストをPCに送信します。 そして、正確に何を送信するか、keyboard_taskはeepromから学習します。



私たちは顧客を大切にしているため、組み合わせの変更/追加ができる限り便利で、ユーザーにIARのインストールとコードの再構築を強制しないようにしました。 ユーザーは手動でeeprom hexファイルを修正する必要があります! 8)



記事に添付されているアーカイブには、Win + D、Alt + Tab、およびVim用のi / Escの組み合わせを持つ3つのeepromファイルがあります(最後はハードウェアで確認していません)。 ただし、これで十分でない場合は、ファイルをメモ帳で開きます。 以下が表示されます。







13バイトが割り当てられ、これがパッケージです。 その構造は次のとおりです。







最初のバイトは、押すだけ(0x00)に応答するか、ペダルを放す(0x01)かを決定します。 次に、クリックごとに3ペアの送信バイトとドロップする3ペアの送信バイトが来ます。 バイトのペアは、実際にはボタンコードの修飾子とバイトのバイトです。 修飾子バイトでは、各ビットは1つの修飾子ボタン(Ctrl、Alt、Winなど)を押すことに対応しています。 一度に複数の修飾子を転送する場合(たとえば、Ctrl + Shift)-これらの修飾子に対応するバイトに複数のビットを設定します。 すべてのキーコードと修飾子は、usb_commun_hid.hファイルに存在します。 または、インターネット上で見つけることができます



MKプログラムは、テープレコーダーのようにeepromからUSBポートへの録音を再生するため、そこに挿入されたものは修正なしでOSに送信されます。 不要なバイトをゼロに置き換えます-コード0x00は「no_key」を意味し、OSはそれを受け入れません。 後で、押すことに対する反応を決定する最初のバイトは一般に必要ないと思い、不要なバイトペアをゼロでスコアリングするのに十分でしたが、何かを変更するには面倒でした。 私はデザインの世界的な成功を前提にしています。



これで、ファイルに必要な調整を加えました。 次に、ラインのチェックサムを計算する必要があります。 これを行うには、以下の図に示すように、コロンから最後のバイト(それらを含まない)まで行をコピーし、ここまたは手作業 COPを検討します。 結果は、eepromファイルの行の最後のバイトに入力されます。 保存しました。 縫います。







海のネットワーク上のファームウェアをフリップするための手順 、すべてが標準です。 微妙な点は1つだけです。EEPROMをフラッシュするには、最初にフラッシュをフラッシュする必要があります。 添付のアーカイブには、クォーツ8および16 MHzのボード用の2つのフラッシュファームウェアがあります。 特に多くのボタンを作成する場合は、16 MHzを使用することをお勧めします。 ボード上の中国語は、Teensy Loaderブートローダーでチップを再フラッシュします(このようなボードにはリセットボタンのみがあり、HWBは使用しません)。Flipは動作しません。ファームウェア用の独自のファームウェアがありますが、一般的に手順は似ています。



この記事のアーカイブには、プロジェクトソース、ready * .hex&* .eepファームウェアファイル、SprintLayout5形式のボード図面、 oshparkキャンペーン形式ガーバーファイル、および高解像度の図とさまざまな写真があります。

そしてもちろん、デモ。







この製品の使用場所 実際、多くの場所。 たとえば、フライトシミュレーターでは、仮想飛行機のパネルのトグルスイッチをoprに一致させます。 キーボードキーを使用すると、鉄のトグルスイッチを使用して独自のダッシュボードを構築できます。 ゲームで。 障害者などのためのキーボード



PS。 どうやら、私は投資する価値がありませんので、これは方法です: yadi.sk



All Articles