検索コード

1602 LCDキーパッドシールド:基本コード

1602 LCDキーパッドシールド:基本コード

このチュートリアルでは、Arduinoで1602 LCDキーパッドシールドをプログラムして活用する方法を紹介します。このシールドは16文字×2行のディスプレイと、さまざまな入力機能を可能にするキーパッドを備えています。このガイドの終わりには、メッセージを表示し、キー入力に効果的に応答できるようになります。

焦点は、キー押下を検出して対応するメッセージをLCDに表示するシンプルなプログラムの作成にあります。視覚的なデモはビデオ(03:00)で確認できます。

ハードウェアの解説

この構成の主要なコンポーネントは1602 LCD Keypad Shieldです。このシールドはArduinoボードに直接接続され、表示機能とユーザー操作用のキーパッドの両方を提供します。LCDはテキストメッセージを表示でき、キーパッドは様々なボタンを使ってユーザーがオプションを選択できるようにします。

このキーパッドはアナログ入力で動作し、Arduinoはそれを読み取ってどのボタンが押されたかを判別します。各ボタンはそれぞれ異なる抵抗値を持っており、マイクロコントローラはセンサから受け取ったアナログ値に基づいてボタンを識別できます。

データシートの詳細

製造元一般的
部品番号1602液晶キーパッドシールド
ロジック/入出力電圧5 V
供給電圧5 V
出力電流(チャンネルごと)2 mA
ピーク電流(チャンネルごと)20 mA
PWM周波数に関する指針該当なし
入力ロジックの閾値0.3 Vcc0.7 Vまで立方センチメートル
電圧降下 / Rオン時のドレイン・ソース/ 彩度該当なし
温度制限70℃
パッケージシールド形式
備考 / バリエーションArduino Unoと互換性があります

  • 損傷を避けるため、LCDに5 Vで電源を供給してください。
  • 必要に応じてキーパッドに適切なプルアップ抵抗を使用してください。
  • 複数のトリガーが発生しないよう、コード内でキー入力をデバウンスしてください。
  • 過熱を避けるために、電流の上限に注意してください。
  • 回路に通電する前に接続をテストしてください。

配線手順

1602 LCD キーパッドシールドを配線するには、単にArduinoボードに直接差し込めばよい。シールドはArduino Unoのピン配置に合わせて設計されている。ピンがしっかり接続されていることを確認してください。

キーパッドのボタンはアナログ入力ピンA0に接続します。LCDのデータ線は使用しているライブラリが内部で処理するため、別途配線する必要はありません。シールドはバックライトやその他の機能を制御するためにいくつかのデジタルピンも使用しますが、それらはライブラリ内であらかじめ定義されています。ライブラリのドキュメントに従えば、通常これらの接続は自動的に処理されることがわかります。

コード例とウォークスルー

コード内では、まずLCDを制御するために必要なライブラリをインクルードします:

#include <LCD4Bit_mod.h>

このライブラリは1602 LCDとの通信を容易にします。次に、指定した行数でLCDオブジェクトのインスタンスを作成します。

次に、LCDを初期化します。setup()関数:

lcd.init();

この行はLCDを使用できるように準備します。初期化後、テストメッセージを表示できます(使用して)lcd.printIn()機能。

メインループでは、キーの押下を検出するためにアナログ入力を読み取ります:

adc_key_in = analogRead(0);

この行はキーパッドから値を読み取ります。その値は、どのキーが押されたかを判断するのに役立ちますget_key()ADCの値をキー番号に変換する関数。

デモンストレーション / 期待される内容

コードを実行すると、ボタンを押すと押したキーに対応したメッセージがLCDに表示されます。例えば、右キーを押すとLCDに Right Key OK と表示されます(ビデオの05:30で)。キー検出が正しく機能していない場合は、配線を確認し、Arduino IDEに正しいライブラリが含まれていることを確認してください。

動画のタイムスタンプ

  • 00:00- はじめに
  • 03:00- コードの概要
  • 05:30- キー押下のデモ
18-Source code for a 602 LCD keypad shield for Arduino
言語: C++
/*
 * // LCD4Bit_modライブラリの使用例
 * // https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LCD4Bit_mod からダウンロードしました
 * // 2017年10月1日。この例は1602 LCDキーパッドシールドで動作します。
 * // RobojaxチャンネルのYouTube動画用に使用されたコード
 * // 動画を見る https://youtu.be/naSSiS_9rEw
 */
#include <LCD4Bit_mod.h>
 // LCDを制御するオブジェクトを作成します。
 // 表示される行数 = 1
LCD4Bit_mod lcd = LCD4Bit_mod(2);

 // 主要なメッセージ
char msgs[5][15] = {"Right Key OK ",
                    "Up Key OK    ",
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() {
  pinMode(13, OUTPUT); // デバッグLEDを使用してハートビートを出力します。

  lcd.init();
 // オプションで、現在、lcd.init()でLCDが行った設定を上書きして、アプリケーション固有の表示設定を行います。
 // lcd.commandWrite(0x0F);// カーソルオン、ディスプレイオン、点滅オン。(ひどい!)
   lcd.clear();
  lcd.printIn("Robojax.com Testing");

}

void loop() {

	adc_key_in = analogRead(0); // センサーから値を読み取る
  digitalWrite(13, HIGH);
  key = get_key(adc_key_in); // キー入力に変換する

	if (key != oldkey) // キーの押下が検出された場合
	{
    delay(50); // デバウンスタイムを待ってください
		adc_key_in = analogRead(0); // センサーから値を読み取る
    key = get_key(adc_key_in); // キー入力に変換する
    if (key != oldkey)
    {
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0); // ライン = 2, x = 0
  			lcd.printIn(msgs[key]);
      }
    }
  }

 // デイレイ(1000);
  digitalWrite(13, LOW);





}

 // ADC値をキー番号に変換する
int get_key(unsigned int input)
{
	int k;

	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{

    return k;
        }
	}

    if (k >= NUM_KEYS)
        k = -1; // 無効なキーが押されました

    return k;
}

リソースと参考文献

ファイル📁

ファイルは利用できません。