工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

この Arduino チュートリアルでは、LCD(液晶ディスプレイ)を Arduino に接続して使用する方法を学びます。このような LCD ディスプレイは、センサーデータなどのシンプルな情報表示に最適で、非常に安価であるため、多くの電子工作プロジェクトで広く使用されています。

私もいくつかの Arduino プロジェクトでこれらを使用してきました。参考までにご覧ください:

  • Arduino セキュリティ&アラームシステム プロジェクト
  • DIY 自動販売機 - Arduino ベースのメカトロニクス プロジェクト
  • Arduino 距離測定器&デジタル水準器 プロジェクト

以下の動画をご覧いただくか、書面によるチュートリアルをお読みください。LCD キャラクターディスプレイを Arduino で使用するために必要なすべての情報が含まれています:LCD のピン配列、配線図、複数のサンプルコードなど。

LCD キャラクターディスプレイとは?

LCD キャラクターディスプレイは、固定サイズの個々の ASCII 文字のみを出力できる特殊なタイプのディスプレイです。これらの個々の文字を使用してテキストを形成します。

ディスプレイをよく見ると、5×8 ピクセルのグリッドで構成された小さな長方形の領域があることがわかります。各ピクセルは個別に点灯できるため、各グリッド内で文字を生成できます。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

これらの長方形領域の数が LCD のサイズを定義します。最も一般的な LCD は 16×2 LCD で、16 文字 × 2 行の構成になっています。もちろん、16×1、16×4、20×4 など他のサイズもありますが、すべて同じ原理で動作します。また、これらの LCD には背景色と文字色の異なるバリエーションがあります。

16×2 LCD のピン配列

左から右へ 16 本のピンがあり、最初のピンは GND(グラウンド) です。2 番目のピンは VCC で、Arduino ボードの 5V ピンに接続します。3 番目は Vo ピンで、ここにポテンショメータを接続してディスプレイのコントラストを調整します。

次に、RS ピン(レジスタセレクトピン)は、LCD にコマンドを送るかデータを送るかを選択するために使用します。例えば、RS ピンがロー状態(0V)の場合、LCD にコマンドを送信します:カーソル位置の設定、ディスプレイのクリア、ディスプレイのオフなど。RS ピンがハイ状態(5V)の場合、LCD にデータや文字を送信します。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

次は R/W ピンで、LCD からの読み取りと書き込みのモードを選択します。書き込みモードは、LCD へのコマンドやデータの送信に使用されます。読み取りモードは LCD 自身がプログラムを実行する際に使用されるため、このチュートリアルでは詳細を割愛します。

次は E ピン(イネーブルピン)で、レジスタへの書き込みを有効にするため、続く D0〜D7 の 8 本のデータピンにデータを送信します。例えば、大文字の「A」を表示したい場合、ASCII コード表に従って 0100 0001 をレジスタに送信します。最後の 2 ピン A と K(アノードとカソード)は LED バックライト用です。

結局のところ、LiquidCrystal ライブラリがほぼすべてを処理してくれるため、LCD の内部動作を深く心配する必要はありません。Arduino の公式サイトでライブラリの関数を確認できます。ライブラリは 4 ビットモードまたは 8 ビットモードで使用できます。このチュートリアルでは、8 本のデータピンのうち 4 本のみを使用する 4 ビットモードで説明します。

Arduino と LCD の接続方法 - 配線図

16×2 LCD ディスプレイを Arduino ボードに接続する方法は以下の通りです。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

Arduino ボードから 6 本のデジタル入力ピンを使用します。LCD のレジスタ D4〜D7 を Arduino のデジタルピン 4〜7 に接続します。Enable ピンをピン 2 に、RS ピンをピン 1 に接続します。R/W ピンを GND に、Vo ピンをポテンショメータの中央ピンに接続します。

必要なコンポーネントは以下のサイトから入手できます:

  • 16×2 キャラクター LCD
  • ポテンショメータ
  • Arduino ボード
  • ブレッドボードとジャンパワイヤ

LCD のコントラスト調整

Vo ピンへの入力電圧を調整することで LCD のコントラストを調整できます。ポテンショメータを使用することで、0〜5V の入力電圧を簡単に微調整できます。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

ポテンショメータなしで LCD を使用できますか?

はい、ポテンショメータがない場合でも、2 つの抵抗で構成される分圧回路を使用して LCD のコントラストを調整できます。分圧回路を使用して 0〜5V の電圧値を設定し、ディスプレイのコントラストを良好にします。私の LCD では約 1V がうまく機能しました。1kΩ と 220Ω の抵抗を使用して適切なコントラストを得ました。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

LCD のコントラストを調整する別の方法として、Arduino から Vo ピンに PWM 信号を供給する方法があります。Vo ピンを Arduino の PWM 対応ピンに接続し、setup 部分で以下のコードを使用します:

analogWrite(11, 100); // ピン D11 で PWM 信号を生成、値 100(255 中)

ピン D11 で値 100(255 中)の PWM 信号を生成し、0〜5V の電圧に換算すると、LCD の Vo ピンに約 2V が入力されます。

LCD Arduino コード

LiquidCrystal ライブラリの動作原理を説明するシンプルなコードです。これは動画の最初の例のコードです:

/* 
 * Arduino LCD Tutorial 
 * Created by Dejan Nedelkovski, 
 * www.HowToMechatronics.com 
 */
#include <LiquidCrystal.h> // LiquidCrystal ライブラリをインクルード
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // LCD オブジェクトを作成。パラメータ: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // LCD 画面へのインターフェースを初期化し、ディスプレイの寸法(幅と高さ)を指定
}

void loop() {
  lcd.print("Arduino"); // LCD に "Arduino" を表示
  delay(3000); // 3秒待機
  lcd.setCursor(2, 1); // 以降のテキストが表示される位置を設定
  lcd.print("LCD Tutorial");
  delay(3000);
  lcd.clear(); // ディスプレイをクリア
  lcd.blink(); // 点滅カーソルを表示
  delay(4000);
  lcd.setCursor(7, 1);
  delay(3000);
  lcd.noBlink(); // 点滅カーソルをオフ
  lcd.cursor(); // 次の文字が書き込まれる位置にアンダースコア(線)を表示
  delay(4000);
  lcd.noCursor(); // LCD カーソルを非表示
  lcd.clear(); // LCD 画面をクリア
}

コードの説明:

最初に LiquidCrystal ライブラリをインクルードします。メニューから「スケッチ」>「ライブラリをインクルード」>「LiquidCrystal」で行えます。次に LC オブジェクトを作成します。このオブジェクトのパラメータは、LCD のピンに対応する Arduino ボードのデジタル入力ピン番号の順序で指定します:(RS, Enable, D4, D5, D6, D7)。setup では、begin() 関数を使用して LCD へのインターフェースを初期化し、ディスプレイの寸法を指定します。

loop ではメインプログラムを記述します。print() 関数を使用して LCD に表示します。

lcd.print("Arduino"); // LCD に "Arduino" を表示

setCursor() 関数は、以降のテキストが表示される位置を設定します。

lcd.setCursor(2, 1); // 以降のテキストが表示される位置を設定

blink() 関数で点滅カーソルを表示し、noBlink() 関数でオフにします。

lcd.blink(); // 点滅する LCD カーソルを表示

cursor() 関数でアンダースコアカーソルを表示し、noCursor() 関数で非表示にします。clear() 関数で LCD 画面をクリアできます。

lcd.clear(); // LCD 画面をクリア

16×2 LCD と Arduino でのスクロールテキスト例

16 文字より長いテキストの場合、LiquidCrystal ライブラリの scrollDisplayLeft() または scrollDisplayRight() 関数を使用してテキストをスクロールできます。

サンプルコード:

#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // LCD オブジェクトを作成。パラメータ: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2);
  lcd.print("Scrolling Text Example");
}

void loop() {
  lcd.scrollDisplayLeft();
  delay(500);
}

scrollDisplayLeft() または scrollDisplayRight() 関数で左または右へのスクロールを選択できます。delay() 関数でスクロール速度を設定します。

テキストのスクロールをより細かく制御したい場合は、「for」ループを使用して独自にスクロールを実装することもできます。例:

#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // LCD オブジェクトを作成。パラメータ: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // LCD 画面へのインターフェースを初期化し、ディスプレイの寸法を指定
}

void loop() {
  // 右へスクロール
  for (int i = 0; i <= 13; i++) {
    lcd.setCursor(i, 0); // 表示位置を設定
    lcd.print("LCD");
    delay(500); // 0.5秒待機
    lcd.clear(); // LCD をクリア
  }
  // 左へスクロール
  for (int i = 12; i >= 1; i--) {
    lcd.setCursor(i, 0);
    lcd.print("LCD");
    delay(500);
    lcd.clear();
  }
}

LCD でカスタムキャラクターを生成・表示する方法

ASCII 文字に加えて、LiquidCrystal ライブラリを使用して LCD にカスタムキャラクターを生成・表示することも可能です。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

各キャラクターの外観を 8 バイトの配列で指定します。サンプルコード:

#include <LiquidCrystal.h>
byte heart[8] = { // バイト配列
  B00000, // B はバイナリフォーマッタ、5つの数字がピクセル
  B01010,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000,
  B00000
};
byte smile[8] = {
  B00000, B00000, B01010, B00000,
  B10001, B01110, B00000, B00000
};
byte lock[8] = {
  B01110, B10001, B10001, B11111,
  B11011, B11011, B11111, B00000
};
byte character[8] = {
  B11111, B10101, B11111, B01010,
  B01110, B11111, B01110, B01110
};
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // LC オブジェクトを作成。パラメータ: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // LCD 画面を初期化し、寸法を指定
  lcd.createChar(0, heart); // カスタムキャラクターを作成
  lcd.createChar(1, smile);
  lcd.createChar(2, lock);
  lcd.createChar(3, character);
  lcd.clear(); // LCD 画面をクリア
  lcd.print("Custom Character"); // メッセージを表示
}

void loop() {
  lcd.setCursor(1, 1);
  lcd.write(byte(0)); // カスタムキャラクター 0(ハート)を表示
  lcd.setCursor(5, 1);
  lcd.write(byte(1));
  lcd.setCursor(9, 1);
  lcd.write(byte(2));
  lcd.setCursor(13, 1);
  lcd.write(byte(3));
}

5×8 ピクセルグリッド内で 0 を 1 に変更することで、キャラクターの外観を指定できることがわかります。

Arduino 16×2 LCD 完全ガイド:接続、プログラミング、データ表示

setup で createChar() 関数を使用してカスタムキャラクターを作成します。

lcd.createChar(0, heart); // カスタムキャラクターを作成

この関数の第 1 パラメータは 0〜7 の数字で、サポートされている 8 つのカスタムキャラクターのいずれかを予約します。第 2 パラメータはバイト配列の名前です。

write() 関数を使用してカスタムキャラクターをディスプレイに書き込み、パラメータとしてキャラクターの番号を指定します。

lcd.write(byte(0)); // カスタムキャラクター 0(ハート)を表示

関連記事: Arduino タッチスクリーンチュートリアル | TFT LCD

まとめ

Arduino で LCD を使用するために知っておくべきことはほぼすべてカバーしました。これらの LCD キャラクターディスプレイは、多くの電子工作プロジェクトで情報を表示するのに非常に便利です。例では 16×2 LCD を使用しましたが、同じ動作原理が他のサイズのキャラクターディスプレイにも適用されます。

このチュートリアルを楽しんでいただき、新しいことを学んでいただけたなら幸いです。質問があれば下のコメント欄で自由にお尋ねください。また、私の 30 以上の Arduino プロジェクトコレクションもぜひチェックしてみてください。

製造プロセス

  1. プランジEDM(シンカーEDM)完全マスター:精密放電加工の究極ガイド
  2. 鋳鉄(Cast Iron)入門:組成、用途、長所・短所を徹底解説
  3. 高炉の包括的ガイド:定義、構成要素、メンテナンス
  4. ボール盤(ドリルプレス)完全ガイド:種類・操作・メンテナンス・メリットデメリット
  5. 板金の基礎知識:種類・用途・製造プロセス完全ガイド
  6. フライス盤完全ガイド:機能・操作・用途・メリット・デメリット
  7. プレーナー完全ガイド:定義・構造・原理・種類・用途・長所短所
  8. シェーパー完全ガイド:定義・原理・種類・部品・用途・長所短所
  9. 金属加工の全て:科学から職人技まで完全ガイド
  10. CNC工作機械完全ガイド:定義・構造・原理・種類・仕様・メリットデメリット
  11. プレス機械完全ガイド:種類・構造・用途・安全・操作資格