1

現在、次のセットアップを持つプロジェクトに取り組んでいます。

  1. AVR マイクロコントローラ
  2. IDE - AVRスタジオ
  3. オペレーティング システム - FreeRTOS

入力には、4x3 のキーパッド マトリックスを使用しています。入力を数値として受け取るように、4x3 キーパッドを既にコーディングしています。しかし、今は英数字にしたいと思っています。携帯電話のキーパッドに見られるように。

例 - キー 2 は、2、a、b、c の入力を取得するために使用されます。キー 2 を 1 回押すと番号 2 が表示され、キー 2 を 2 回押すと「a」が表示され、キー 2 を 3 回押すと「b」が表示され、キー 2 を 4 回押すと「d」が表示されます。

上記の意味を理解していただければ幸いです。このタイプの機能を実装するために C でコードのアイデアを提供できる人はいますか?

4

2 に答える 2

2

問題は、30 ミリ秒後に xxx 秒後に 2 (たとえば) を押したときです。確認して 2 が押されていることがわかった場合は、2 つのケースがあります。case1> 押されたキーは新しく、以前と同じです。 case2> 押されたキーは以前と同じで、xxx から現在まで連続して押されています。

于 2012-11-23T08:41:40.307 に答える
2

ほとんどの場合、最後にキーを押したときのシステム時刻を追跡し、次にキーを押したときのシステム時刻と比較する必要があります。現在のキーが最後に押されたキーと同じで、キーを押す間隔が短い場合 (たとえば、1 秒未満)、現在の入力文字をそのキーの文字リスト内の次の文字に置き換えます。時間差が 1 秒を超える場合、または別のキーが押された場合は、現在の文字を受け入れて、キーのリストの最初の文字から始まる新しい文字を追加します。

于 2011-09-04T05:15:03.347 に答える