レッスン20/31:ArduinoでLCD1602を使ってテキストを表示する | Robojax
はじめに
LCD1602は、Arduinoプロジェクトで最も人気のある英数字ディスプレイの1つであり、I2Cバックパックと組み合わせると、非常に簡単に使用できます。このチュートリアルでは、テキスト、数字、カスタム文字の表示方法、および画面上でのテキストのスクロール方法を学びます。また、LCDを他のセンサーと組み合わせて実用的なモニタリングツールを作成する方法も紹介します。このガイドは、より広範なArduinoコースの一部であり、自宅、学校、またはワークショップで役立つデバイスを構築するのに役立つように設計されています。
この知識を使って構築できる実用的なアイデアをいくつか紹介します:
- 温室や爬虫類の飼育ケージ用の温湿度モニター。
- プロジェクトのバッテリーレベルを確認するための簡単な電圧計。
- 駐車アシストや、満杯度を表示するスマートゴミ箱用の距離センサー。
ハードウェアの概要
LCD1602は、16文字×2行のディスプレイです。背面にあるモジュールはI2C(またはI²C)アダプターで、標準のパラレル接続から必要な配線数を、グラウンド、VCC、SDA、SCLのわずか4本に減らします。これにより、配線がはるかに簡単になり、Arduinoの多くのデジタルピンを解放できます。
このディスプレイにはバックライトがあり、ソフトウェアでオン/オフを切り替えることができます。また、I2Cモジュールにはコントラストを調整するための小さなポテンショメータもあります。ディスプレイの電源を入れて何も表示されない場合は、テキストが見えるようになるまでこのネジを回してください(ビデオの02:47参照)。
このディスプレイには、20文字×4行のLCD2004など、さまざまなバージョンがあります。I2Cアドレスは、モジュールのA0、A1、A2ジャンパーをはんだ付けすることで変更することもできます(ビデオの03:51参照)。デフォルトのアドレスは0x27であることが多いですが、異なる場合もあるため、特定のモジュールに適したアドレスを見つけるためにI2Cスキャナーを実行することを常にお勧めします。
ハードウェアコンポーネント
このビデオのメインのデモンストレーションに沿って進めるには、次のコンポーネントが必要です:
- Arduino Uno(または互換ボード)
- I2Cモジュール付きLCD1602
- ブレッドボードとジャンパーワイヤー
後のセクションでは、構築したいプロジェクトに応じて、DHT11センサー、ポテンショメータ、または超音波センサーも必要になります。
配線ガイド
LCDの接続は簡単です。配線図に接続が明確に示されています。
I2CモジュールのピンをArduinoに次のように接続します:
- GND をArduinoの GND へ
- VCC をArduinoの 5V へ
- SDA をArduinoの A4 へ
- SCL をArduinoの A5 へ
Arduinoボードに専用のSDAおよびSCLピンがある場合は、それらに接続することもできます(ビデオの05:47参照)。
ライブラリのインストール
このモジュールには「Arduino Liquid Crystal I2C」ライブラリが必要です。ビデオの説明またはRobojaxウェブサイトのリンクからダウンロードできます。ダウンロードしたら、Arduino IDEで スケッチ > ライブラリをインクルード > .ZIP形式のライブラリを追加 に移動して、ダウンロードしたファイルを選択してインストールします(ビデオの06:41参照)。
コードの説明
コードスニペットは提供されていないため、ビデオで使用されているコードの一般的な構造について説明します。
コードは、必要なライブラリ、つまりI2C通信用の Wire.h とディスプレイ用の LiquidCrystal_I2C.h ライブラリをインクルードすることから始まります。重要な部分は、LCD用のオブジェクトを作成することです。正しいI2Cアドレスとディスプレイの寸法を設定する必要があります:
// 16文字2行のディスプレイ用にLCDアドレスを0x27に設定
LiquidCrystal_I2C lcd(0x27, 16, 2);
ディスプレイに何も表示されない場合は、0x27 を 0x3F またはI2Cスキャナーで見つかった別のアドレスに変更する必要があるかもしれません。16 と 2 は、ディスプレイの列数と行数を表します。
setup() 関数では、LCDを初期化してバックライトをオンにします:
void setup() {
lcd.init();
lcd.backlight();
}
テキストを印刷するには、lcd.setCursor(列, 行) 関数を使用してカーソルを配置し、その後に lcd.print() を使用してデータを表示します。たとえば、2行目に印刷するには、lcd.setCursor(0, 1) を使用します。ビデオでは、lcd.write(223) を使用して度記号などの特殊文字を印刷する方法も説明しています(ビデオの31:42参照)。
デモンストレーション
ビデオでは、LCDのいくつかの主要な機能をデモンストレーションしています。まず、基本的な「Hello World」テキストの印刷と、lcd.scrollDisplayLeft() 関数を使用してテキストを画面上で移動させる方法を示しています。その後、LCDをDHT11センサーと組み合わせて温度と湿度を表示し、ポテンショメータと組み合わせて電圧を表示し、超音波センサーと組み合わせて距離を表示します。
温度表示では、コードがセンサーを読み取り、値を印刷します。小数なしの整数を表示するには、ビデオに示されているように、float値を整数にキャストできます(ビデオの32:21参照)。
電圧計については、コードがポテンショメータからアナログ値を読み取り、0〜5Vの電圧範囲にスケーリングし、画面に表示します(ビデオの34:31時点)。
最終デモでは、LCDと超音波センサーを組み合わせ、測定した距離をセンチメートル単位で表示します(ビデオの37:55時点)。
このビデオの関連プロジェクト
このビデオには、他のプロジェクトのチュートリアルも含まれています。こちらで見つけることができます:
チャプター
- [00:00] LCD1602の紹介とコース概要
- [01:30] LCD1602とI2Cモジュールのハードウェア概要
- [02:47] 表示コントラストとバックライトの調整
- [03:14] ピン接続とI2Cアドレスの選択
- [05:28] LCDの配線図
- [06:16] 必要なライブラリのインストール
- [07:24] テキストを印刷するための基本コード
- [11:10] 点滅カーソルの例
- [13:46] カスタム文字と特殊記号の印刷
- [18:51] シリアル表示の例
- [23:16] LCDでのテキストのスクロール
- [36:51] LCDと超音波センサーの組み合わせ
/*
Lesson 20/31: Displaying text on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
/*
This is code for LCD1602 Display with I2C module
* watch the video for this code https://youtu.be/q9YC_GVHy5A
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purpose only.
* This library is based on work done by DFROBOT (www.dfrobot.com).
*/
/*
* This code has been modefied from the Arduino library
* Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
* in Ajax, Ontario, Canada
* for Robojax.com
*
* This is code for LCD1602 Display with I2C module
* which can display text on the screen.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
//lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
lcd.clear();
lcd.setCursor (0,0);
lcd.print("SunFounder ");
lcd.setCursor (0,1);
lcd.write(244);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Common Course Links
Common Course Files
必要かもしれないもの
-
アマゾンAmazonでLCD1602-I2Cを購入するamzn.to
-
アマゾンSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
アマゾン
-
アマゾン
-
アマゾン
-
イーベイeBayでLCD1602-I2Cを購入するebay.us
-
アリエクスプレスAliExpressから10個のLCD1602-I2Cを購入するs.click.aliexpress.com
リソースと参考文献
-
ドキュメンテーションSunFounder 3 in 1 IoT/スマートカー/学習キットのドキュメントdocs.sunfounder.com
-
外部RoboJaxのLCDライブラリ(ZIP)robojax.com
-
外部SunFounderの3-in-1スマートカー学習キットを購入するsunfounder.com
ファイル📁
Arduinoライブラリ(zip)
-
SunFounderの3-in-1スマートカー学習キットソースコード
3in1-kit-main-v2.zip12.80 MB