Arduino(互換)ボードで電子工作 ~Hello, World! on LCD~

Arduino

こんにちは。Jinです。
今日はArduinoを使って"Hello, World!"をやっていこうと思います。「前回電子工作における"Hello, World!"であるLチカをやったではないか」と思った方もいると思いますが、今回は本当にHello, World!を表示させます。

Contents

キット付属のLCD(liquid crystal display)を使用するための準備

私が入手したosoyooのArduino互換スターターキットには16×2文字表示可能なLCDが付属していたのでそれを使用します。調べ方が悪いのかもしれないですが安心、安全の中国製のこのキットは各パーツの品番等がどこにも書いてありません。おそらく定番パーツなので気にしてはいないのですが、いつかこの手のことが問題になるかもしれないです。

I2C通信仕様のLCD

今回使用したLCDはI2Cで制御できるようになっていましたので、Arduinoとの接続はGND, VCC, SDA, SCLの4pinです。電圧が5V仕様だったり3.3V仕様だったりするので確認したほうがよいらしい。私のものは5V仕様だったのでArduinoと直接接続してOKでした。3.3V仕様の場合は電圧変換のひと手間が必要のようです。
接続すると以下のようになります。結局面倒だったのでブレッドボードはまだ使わず直接接続してしまいました。

LiquidCrystal_I2Cライブラリの追加

Arduino IDEにもともと入っているLCD用ライブラリはI2C用ではないのでosoyooのWebサイトからライブラリとサンプルコードをダウンロードして使うことになります。結果としてI2Cがどうこうと考える必要はないみたいです。

LCD(liquid crystal display)に文字を表示してみる

ソースコード

今回は下のようなコードです。サンプルをosoyooのWebで入手できました。loop()で表示しているようなので繰り返し同じ表示指示をしているようですね。たぶんsetup()で一度指示してloop()は空でも問題ないと思います。
I2Cのアドレスは私の環境では0x27でした。

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2);  // run ic2_scanner sketch and get the IC2 address, which is 0x3f in my case,it could be 0x3f in many cases
 
void setup()
{
  lcd.init();                      // initialize the lcd
}
 
void loop()
{
// set cursor to first line
lcd.setCursor(0, 0);

// Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, World!");
  lcd.setCursor(0,1);
  lcd.print("ProjectDEEP");
}

バックライトが光るだけで何も表示されない

上記ソフトを書きこんでみたのですが、LCDには何も文字が表示されていませんでした。ただバックライトが光っているだけでした。アドレスが間違っているのかな?とか考えましたが、lcd.backlight()をコメントアウトしてみたらバックライトも消えたのでI2C通信の問題ではなさそうでした。

結論から言うと単にコントラストがおかしくて見えなかっただけで表示はされていました。私のパーツの場合はLCDの基盤の裏でコントラストの調整ができたのでそれで解決です。すでにアクリルボードに固定してしまっていたので外して調整しなければならず面倒でした。事前に確認しておくべきですね。

Hello, World!

無事表示できました。
写真だと見にくいですが"Hello, World! ProjectDEEP"と表示できました。

ちなみにコードを変えて日本語表示できるか試しましたが見事に文字化けしていました。文字コード等日本語対応はあまり深入りしたくないので今回はスルーです。

考察

課題発見

今回はライブラリもサンプルコードもほぼそのままなので純粋に自分でやったことからの学びはあまりないですが、今後I2C通信の詳細を把握しておいたほうがいいかなと思いました。

改めて思う恵まれた環境

このようなArduinoを使った電子工作ではとても簡単にLCD表示までたどり着けることは初心者にとってとてもありがたいなと思います。本当にすべてを理解して自分の知識にするにはまだまだだとしても実際のLCD表示まで簡単に行えて挫折せずに様々な体験ができます。このようなArduino等の有名マイコンボードを使った電子工作は興味あるけどやったことないという人には本当におすすめです。

次回やること

まだ決めていませんが、今回表示できるようになったLCDに何らかのセンサーの値を表示するのもいいかもしれない。あとはLCDではなくPCに情報を送る方法も確認したいですね。ではまた次回お会いしましょう!

コメント

タイトルとURLをコピーしました