I2C LCD 1602

../_images/21_i2c_lcd.png

はじめに

I2C LCD1602は、I2Cプロトコルを用いて16x2(16列と2行)の液晶ディスプレイ(LCD)にテキストやキャラクターを表示するデバイスです。Arduinoプロジェクトからの情報、例えばセンサーの読み取り値、メッセージ、メニューなどを表示するために使用できます。I2Cモジュールには、LCDディスプレイ用のパラレルデータにI2Cシリアルデータを変換するPCF8574 I2Cチップが内蔵されています。

原理

I2C LCD1602は、通常のLCD1602と、その背面に取り付けられたI2Cモジュールで構成されています。このI2Cモジュールは、ArduinoのI/OポートをI2Cプロトコルを使用して拡張するチップです。I2Cプロトコルは、SDA(シリアルデータ)とSCL(シリアルクロック)の2本のワイヤーを使用するシリアル通信プロトコルです。複数のデバイスがこの2本のワイヤーとユニークなアドレスを用いて通信できます。

I2Cモジュールは、Arduinoからの信号をLCDのコマンドに変換します。LCDには、16x2のセルがあり、それぞれのセルは5x8のドットで構成されています。これらのドットは、電圧をかけることでオンまたはオフにできます。LCDは、ドットの異なる組み合わせをオンまたはオフにすることで、さまざまなキャラクターやシンボルを表示できます。

../_images/21_ic2_lcd_2.png

I2Cアドレス

基本的にデフォルトアドレスは0x27で、一部の場合には0x3Fになることもあります。

デフォルトアドレスの0x27を例に取ると、A0/A1/A2パッドを短絡することでデバイスアドレスを変更できます。デフォルト状態では、A0/A1/A2は1ですが、パッドが短絡されると、A0/A1/A2は0になります。

../_images/21_i2c_address.jpg

バックライト/コントラスト

バックライトはジャンパーキャップで有効にでき、キャップを外すとバックライトが無効になります。背面の青いポテンショメーターは、コントラスト(最も明るい白と最も暗い黒との間の明るさの比率)を調整するために使用されます。

../_images/21_back_lcd1602.jpg
  • ジャンパーキャップ: このキャップによりバックライトを有効にでき、キャップを外すとバックライトが無効になります。

  • ポテンショメーター: これは、表示されるテキストの鮮明度を調整するために使用されます。時計回りに回すと増加し、反時計回りに回すと減少します。

注釈

LCDの配線が完了したら、Arduinoをオンにして、I2Cモジュール上のポテンショメーターを回して、最初の行に四角が表示されるまでコントラストを調整し、LCDが正常に動作することを確認してください。



使い方

使用する電子部品

  • Arduino Uno R4またはR3ボード * 1

  • I2C LCD1602 * 1

  • ジャンパーワイヤー

回路の組立て

../_images/21_I2C_lcd_circuit.png

コード

注釈

ライブラリをインストールするには、Arduinoライブラリマネージャーで "LiquidCrystal I2C" と検索してインストールしてください。



コードの説明

  1. ライブラリの取り込みとLCDの初期化:

    LiquidCrystal I2Cライブラリがインクルードされ、それに続いてLiquidCrystal_I2Cクラスを使用してLCDオブジェクトが作成されます。この際、I2Cアドレス、列数、行数が指定されます。

    注釈

    ライブラリをインストールするには、Arduinoライブラリマネージャーで "LiquidCrystal I2C" と検索してインストールしてください。

    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    
  2. setup() 関数:

    setup() 関数はArduinoが起動すると一度だけ実行されます。この関数内で、LCDが初期化され、表示がクリアされ、バックライトがオンにされます。その後、LCDに2つのメッセージが表示されます。

    void setup() {
      lcd.init();       // initialize the LCD
      lcd.clear();      // clear the LCD display
      lcd.backlight();  // Make sure backlight is on
    
      // Print a message on both lines of the LCD.
      lcd.setCursor(2, 0);  //Set cursor to character 2 on line 0
      lcd.print("Hello world!");
    
      lcd.setCursor(2, 1);  //Move cursor to character 2 on line 1
      lcd.print("LCD Tutorial");
    }
    

追加のアイデア

  • 温度センサーを組み込み、LCDに現在の室温を表示する。

さらに多くのプロジェクト