ArduinoでGROVE RGBバックライト液晶モジュールを使う

「GROVE RGBバックライト液晶モジュール」は、PCにArduinoを接続していない状況で、センサーからの信号などを表示して確認する事ができるバックライト付きで見やすいディスプレイです。

1画面に16文字×2行を表示可能で、バックライトの色もRGB指定で自由に変更できます。

GROVE RGBバックライト液晶モジュール(1,980円)


接続方法

前提条件として 「Arduino Uno」「GROVEベースシールド」が必要です。

接続は写真のようにベースシールドの「I2C」コネクタに接続するのみですが、ディスプレイは「3.3V」では動作しないので、ベースシールドの切り替えスイッチが「5V」となっているのを確認してください。


ライブラリのインストール

Arduino IDE の「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」からキーワード「Grove LCD RGB」で検索します。

検索結果に表示されなければ「公式サイト」から「ZIP形式」でダウンロードしてライブラリに追加します。


サンプルスケッチ

以下のスケッチを実行すると、バックライトの色の変更方法と、文字列の表示方法が理解できるかと思います。使い方はとても簡単です。

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

///=======================================================================
//   *setup
///=======================================================================

void setup(){

	//---LCDは16文字2行(初期化)
	lcd.begin(16, 2);

	//---背景赤色
	lcd.setRGB(255, 0, 0);
	delay(500);

	//---背景青色
	lcd.setRGB(0, 255, 0);
	delay(500);

	//---背景緑色
	lcd.setRGB(0, 0, 255);
	delay(500);

	//---背景黒色(バックライト消灯)
	lcd.setRGB(0, 0, 0);
	delay(500);

	//---背景白色
	lcd.setRGB(255, 255, 255);
	delay(500);

	//---1行目を指定
	lcd.setCursor(0, 0);
	lcd.print("0123456789101112");
	delay(1000);

	//---2行目を指定
	lcd.setCursor(0, 1);
	lcd.print("ABCDEFGHIJKLMNOP");
	delay(1000);

	//---これ以降表示しない
	lcd.noDisplay();
	delay(1000);

	//---これ以降表示する
	lcd.display();
	delay(1000);

	//---表示内容をクリア
	lcd.clear();
	delay(1000);

	//---オートスクロールを開始
	lcd.autoscroll();

	//---1行目の末尾を指定
	lcd.setCursor(16, 0);

	//---何文字でも表示できるけど視認性は悪い
	for (int thisChar = 0; thisChar < 30; thisChar++) {
		lcd.print(String(thisChar) + " ");
		delay(300);
	}

	//---オートスクロールを停止
	lcd.noAutoscroll();

	//---表示内容をクリア
	lcd.clear();
	delay(1000);
}

///=======================================================================
//   *loop
///=======================================================================

void loop(){
}

上記の基本的な機能以外にも、カーソルを移動したり、絵文字を使ったりと、使い所の難しい機能もたくさんありますので「ファイル」→「スケッチ例」→「Grove – LCD RGB Backlight」からお試しください。


GPSの緯度経度を表示してみる

実践的な使い方として、GPSの信号をディスプレイに表示してみます。窓際や屋外などのPCから遠い場所でセンサーの内容を確認できるので利用価値がありそうです。

GPSモジュールやライブラリについては、以下の過去記事で説明しています。


ベースシードの「D2」コネクタにGPSモジュールを接続します。


GPSの緯度経度をディスプレイに表示するスケッチ

#include <Wire.h>
#include "rgb_lcd.h"

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

rgb_lcd lcd;

TinyGPSPlus gps;
SoftwareSerial ss(2, 3);

///=======================================================================
//   *setup
///=======================================================================

void setup(){

	//---Serialポートを開く
	Serial.begin(9600);

	//---SoftwareSerialポートを開く
	ss.begin(9600);

	//---LCDは16文字2行(初期化)
	lcd.begin(16, 2);

	//---LCD 1行目を指定
	lcd.setCursor(0, 0);
	lcd.print("wait...");
}

///=======================================================================
//   *loop
///=======================================================================

void loop(){

	//---GPS受信データの展開
	while(ss.available() > 0){

		//---GPSモジュールからの読み込み
		char c = ss.read();

		//---GPSからの生データ
		//Serial.print(c);

		//---GPSの[NMEA]形式の変換
		gps.encode(c);

		//---------------------
		//   *GPS位置情報更新
		//---------------------

		if(gps.location.isUpdated()){

			//---表示を消す
			lcd.clear();
			delay(500);

			//---緯度
			float gps_lat = gps.location.lat();

			//---経度
			float gps_lng = gps.location.lng();

			//---シリアルモニタに表示する
			Serial.print(F("Lat ")); Serial.print(gps_lat, 6);
			Serial.print(F("Lng ")); Serial.println(gps_lng, 6);

			//---LCD 1行目を指定
			lcd.setCursor(0, 0);
			lcd.print("Lat " + String(gps_lat, 6));

			//---LCD 2行目を指定
			lcd.setCursor(0, 1);
			lcd.print("Lng " + String(gps_lng, 6));

			delay(1000);
		}
	}
}

窓際に置いて実行すると緯度経度が表示されました!

ちなみに、GPSの信号を掴むのに時間が掛かることもあるので、緯度経度がうまく表示されない場合には数分間放置してみてください。


モバイルバッテリーの問題点

屋外で使おうと、スマホ用5Vのモバイルバッテリーに接続しましたが、電圧が安定しないのかディスプレイは点灯しましたが文字が表示されませんでした。

解決法があればこちらの記事に追記します!