Arduinoの立ち上がり片15ジョイスティックOLEDマルチレベルのメニュー

ジョイスティックは、マルチレベルのメニューをOLED

人間とコンピュータの相互作用のためのより多くの需要として、画面と情報埋め込み装置は、より詳細な各種メニューキーの入力、各種のスイッチング動作と、より多く表示する必要があります。それは別のメニュー間の動作をどのように便利な管理の切り替え?実験により、マルチレベルのメニューのアイデアを実現紹介するBenpian。

はじめに1.マルチレベルのメニュー

画面操作の様々な、マルチレベルのメニューは、思考の種類や固定プログラミングフレームワークです。キーがトリガーされたときに、単に、現在のインタフェースキーが配列インデックスからジャンプし、その後、インデックス・インターフェースに応答して機能を実行する必要があるキーの定義に従って取り出します。

2.実現

すべてのまず、我々は、構造体は、典型的には、インターフェース部材可変インデックス番号、インターフェイス関数ポインタと表現格納されたインデックスキーの実際のキーに対応する変数を含む、構造を定義する必要があります。前記インターフェースインデックス番号は、対応する関数ポインタです。

typedef struct
{
  unsigned char index;
  unsigned char up;
  unsigned char down;
  unsigned char left;
  unsigned char right;
  void (*operation)(void);
} KEY_TABLE;

この実験では、それは、右の4つの主要な変数を左に、上下を定義して、4つのボタンを定義します。

2.構造型定義は、構造体の配列、インターフェースの数を定義するために、数は、アレイ内の要素の数です。

KEY_TABLE table[9] =
{
  {0, 0, 0, 0, 0, (*menu11)},
  {1, 0, 0, 0, 0, (*menu12)},
  {2, 0, 0, 0, 0, (*menu21)},
  {3, 0, 0, 0, 0, (*menu22)},
  {4, 0, 0, 0, 0, (*menu23)},
  {5, 0, 0, 0, 0, (*menu31)},
  {6, 0, 0, 0, 0, (*menu32)},
  {7, 0, 0, 0, 0, (*menu33)},
  {8, 0, 0, 0, 0, (*menu34)},
};

この実験は、それぞれのインターフェース関数ポインタに対応する、0から8まで前記インターフェースインデックス番号、そう9として、配列要素をインターフェース9を定義します。本実験2において利用可能なメニューには、3つの第2レベルのメニューがあり、メニューは3〜4を有します。

3. [OK]ボタンを押して、各インタフェースインデックスをジャンプする必要があります。このステップは非常に重要な、スイッチングインタフェースとの間の関係を決定します。本実験で示すようなメニューは、インターフェース9との間のスケッチ、以下の相関図に仕上げ関係を切り替えることができる前に。

マルチレベルのメニュー構造

いくつかの例:

インデックスは、{0、0、0、0、0、(* menu11)}の4つの主要な変数の値を決定する、即ちmenu11インターフェース下、0です。

  • アップボタンが押されると、表示menu11インタフェース、すなわちインタフェースインデックスは、その後、タイムアップ= 0です。
  • キーが押下されると、表示menu12インタフェース、すなわちインタフェースインデックスは、= 1ダウン、時間1です。
  • 左ボタンが押されると、表示menu11インタフェース、すなわちインタフェースインデックスは、0ダウン、時間0です。
  • 右キーが押されると、表示menu21インタフェース、すなわちインタフェースインデックスは、= 2ダウン、時間2です。

したがって、得るために、{0、0、1、0、2、(* menu11)}

図5は、すなわち、インターフェースは、4つの主要な変数の{5、0、0、0、0、(* menu31)}値を決定menu31、指標です。

  • アップボタンが押されると、表示menu31インタフェース、すなわちインタフェースインデックスは、その後、タイムアップ= 5です。
  • キーが押下されると、表示menu32インタフェース、すなわちインタフェースインデックスは、= 6ダウン、時間6です。
  • 左ボタンが押されると、表示menu21インタフェース、すなわちインタフェースインデックスは、= 2ダウン、時間2です。
  • 右キーが押されると、表示menu31インタフェース、すなわちインタフェースインデックスは、= 5ダウン、時間5です。

したがって、精製し、{5、5、6、2、5、(* menu31)}

各インターフェース間のジャンプの関係は、実際の需要に応じて、以下の完全な構造アレイ可変本実験の状況を確立しました。

KEY_TABLE table[9] =
{
  {0, 0, 1, 0, 2, (*menu11)},
  {1, 0, 1, 1, 4, (*menu12)},
  {2, 2, 3, 0, 5, (*menu21)},
  {3, 2, 3, 0, 7, (*menu22)},
  {4, 4, 4, 1, 4, (*menu23)},
  {5, 5, 6, 2, 5, (*menu31)},
  {6, 5, 6, 2, 6, (*menu32)},
  {7, 7, 8, 3, 7, (*menu33)},
  {8, 7, 8, 3, 8, (*menu34)},
};

実際のキーの機能は、戻り値に対応するキーのインターフェイスに対応するインデックス番号を取得し、次にインタフェースのインデックス番号に従って対応する機能を検索し、実行します。

switch (keyValue)//获取按键对应序号
    {
      case 1: funIndex = table[funIndex].right; break;
      case 2: funIndex = table[funIndex].left; break;
      case 3: funIndex = table[funIndex].down; break;
      case 4: funIndex = table[funIndex].up; break;
    }
current = table[funIndex].operation;//根据需要获取对应需要执行的函数
(*current)();//执行获取到的函数

3.実験材料

  • 宇野R3開発ボード
  • USBデータケーブルをサポート
  • パンプレートと支持ケーブル
  • 二軸モジュールロッカーキー
  • OLEDディスプレイ

4.実験手順

1建物の概略回路図。

VCC OLEDスクリーン、GNDは、開発ボードに接続されている3.3V開発ボード、GND、SDA OLEDスクリーンSCLとA4とA5に接続されています。二軸ロッカーキーモジュールVCC、GND 5V開発ボードは、GND、X軸出力モジュールに接続され、Y軸出力ボードは、アナログピンA0、A1に接続されています。

原理を以下に示します。

実験回路図

物理的な接続を以下に示します。

物理的な接続図

2.、新しいスケッチを作成し、コードの交換に自動的に生成されたコードをコピーして保存します。

ロングコード、完全なコードのためには、記事の最後に提供されています。

3.開発ボードコネクタ、およびダウンロードのために、ボードの種類に対応するポート番号を設定します。

ダウンロード

実験結果

マルチインターフェースの遷移:

実験結果


テキストコードを取得するには、no社会的関心ない「TonyCode」舞台裏返信「改善」。
Arduinoの学習交換基:868 283 450
より、私は公共の数の関心を歓迎します。Fangerウェイコードに従うようにマイクロチャネルを掃引:
マイクロチャンネルスキャンコードは、公開番号を追加しました:TonyCodeを

63元記事公開 ウォンの賞賛250 ビューに23万+を

おすすめ

転載: blog.csdn.net/TonyIOT/article/details/104013813