Arduino—再び(1)–LCD Keypad Shield

しばらく前にArduinoを使って、フライス用にDROの表示用のものを作成しました。また、備忘録をかねて、
Arduinoをいじりはじめました。LCDと外部入力(キーパッド)のものがほしかったので、いろいろ調べまし
た。
スイッチサイエンスのLCDシールドは手元にあったのですが、これは、

外部入力ができないので、〇zonで、LCD Keypad Shieldくぐると、600円~5000円のものが引っかかりました。LCD 1602でくぐると、600円から30000円と幅広いものが引っかかります。30000円のもの買う方いるのかなと疑問に思ってしまいますが、もちろん、安い物をポチリました。

ただ、ポチったものには、ピンへダーがついてないので、後付けするようかなと思います。2700円だいのものには、ピンヘッダーが付いていますが、高いですね。

これらのシールドには、5個のkeyが付いていますが、どうやって、判別をしてるのかと思いましたが、
keyの配線図がのってました。

抵抗を介して一つのポートに接続しているようですが、どうやって判別するのか、くぐってみると、どうや
ら、電圧の違いで判別してるようでした。
KeyPad用のライブラリーには、

  iuint8_t LiquidCrystal::readButtons(void) {
    int adc_key_in = analogRead(0);
     // read the value from the sensor
    // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
    // we add approx 50 to those values and check to see if we are close
    if (adc_key_in > 1000) return 0x00;
    if (adc_key_in < 50) return BUTTON_RIGHT;
    if (adc_key_in < 195) return BUTTON_UP;
    if (adc_key_in < 380) return BUTTON_DOWN;
    if (adc_key_in < 555) return BUTTON_LEFT;
    if (adc_key_in < 790) return BUTTON_SELECT;
    return 0x1F; // when all others fail, return this…   }

のように記述があり、アナログで電圧の変化によって、判別してるようでした。使用上の注意に接点経年劣化やチャタリング等の対策がソフトの方で必要だとの記述もありました。

“Arduino—再び(1)–LCD Keypad Shield” への2件の返信

  1. コメントありがとうございます。最近工作室売店は覗いていませんが、いろいろあるんでしょうね。掲載の諸兄のプログラムは、アナログのA0のピンの電圧を読み取って、電圧の違いで、キーの判別をしている部分です。int adc_key_in = analogRead(0)で電圧を読み取って、変数のadc_key_inに格納してます。読み取った電圧によって、return BUTTON_RIGHTの部分で、キーの種類を返してます。arduinoは、PICと違って、お手がるです。

  2. こんにちは。
    プログラムですが、私には分かりません。
    工作室売店さんで、DROを売っていたが、今は売っていないので、自作できるってことは強いですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA