So-net無料ブログ作成

USB プロジェクト - 3ボタン・マウス [USB]このエントリーを含むはてなブックマーク#

HIDのサンプル・プログラムを改造して、 ついに、3ボタン・マウスを作りました。

概要

この作品は、デジタル入力のみを用いて作られた3-ボタン・マウスです。 マウスの移動には、四つのタクト・スイッチを使います。 移動速度は、ファームウェアにより自由自在です。 ボタンも三つ付いています。 場所が余ったので、LEDによるインジケータも付けました。 今は、ろくな仕事を与えられていません。

キーとLEDの割り当て

キーとLEDは、それぞれポートを一つずつ占有しています。

キーとLEDの割り当て
種別名前/位置ポート機能
キーPTA0ポインタを右に移動します。
キーPTA1ポインタを上に移動します。
キーPTA3ポインタを下に移動します。
キーPTA4ポインタを左に移動します。
キーボタン1PTA7マウスの左ボタンです。
キーボタン2PTA5マウスの右ボタンです。
キーボタン3PTA6マウスの中央ボタンです。
LED左/赤PTD4ボタン1のインジケータです。
LED中/黄PTD3ボタン3のインジケータです。
LED右/緑PTD2ボタン2のインジケータです。

キー入力にPTA2が使われていないのは、間違いではありません。 USBDEV基板上で10kΩの抵抗によってプルダウンされているため、 プルダウンタイプのキー入力には使えなかったのです。 LEDには、それぞれ1kΩの電流制限抵抗を付けています。

即興で作成したので、回路図は、存在しません。

プログラム

プログラムは、キーボードのフリをしていたプログラムをもとに改造を施しています。

レポート・デスクリプタ以外で変更があったのは、 インターフェース・デスクリプタに含まれるプロトコルIDが、 マウス・デバイスになったところです。

  {                     // Size of this Descriptor in Bytes
    sizeof(interface_descriptor),
    DT_INTERFACE,       // Descriptor Type (=4)
    0,                  // Number of *this* Interface (0..)
    0,                  // Alternative for this Interface (if any)
    1,                  // No of EPs used by this IF (excl. EP0)
    0x3,                // IF Class Code (0x03 - HID)
    1,                  // Boot Interface Subclass Code
    2,                  // IF Protocol Code  (2 = Mouse)
    0                   // Index of String Desc for this Interface
  }, // end of InterfaceDesc

これ以外の部分は、すべてキーボード・デバイスのものと同じです。

キーボードのインジケータで使われていたエンドポイントを通じたデータ受信の部分は、 おそらく使われることはないだろうと思いましたが、そのまま残してあります。 エンドポイントを通じたデータの送信の部分は、 送信するデータ長が8バイトであったものを3バイトにしてあります。

#define   RX0_SIZE      (8)     // Byte count of RX0
extern volatile byte    Rx0Buffer[RX0_SIZE];
#define   TX1_SIZE      (3)     // Byte count of TX1
extern volatile byte    Tx1Buffer[TX1_SIZE];

改造のためのヒント

現在は、ポインタの動作が1ドットずつの超低速です。 キーを押しっぱなしにすると、加速していくような仕掛けをファームウェアに仕込むと もっとマウスらしくなるかと思います。

また、LEDは、単にボタンに連動して点灯するようになっているので、 もっと賢い使い方が出来ないか、考えています。

プロジェクト・アーカイブ


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。