Arduino Uno Rev.3でLCD1602 + I2Cモジュールを使う
以前、Raspberry Pi用のキットを買ったときにI2Cモジュール付きのLCD1602が付いてきたのだが、5Vでプルアップされてあり、GPIOの電圧が3.3Vのラズパイにつなぐとちょっとまずそうなので使わずじまいだった。
ということで今回はGPIOの電圧が5VであるAurduinoと接続して、LCDに文字を表示させてみたいと思う。ちなみにLCD1602のI2Cモジュールは色々なメーカーが作っているようだが、大体仕様は同じになっているようだ。こういうやつ↓
開発環境
Arduino Uno R3
Windows 10(開発用PC)
LCD1602 + I2Cモジュール
Arduino IDE 1.8.19
LiquidCrystal I2C (Release 1.1.2)
ArduinoとLCDを接続する
以下のようにI2CモジュールとArduinoの5V、GNC、SDA、SCLを接続するだけ。なお、I2CなのでSDA、SCLはプルアップが必要だが、テスターで調べてみたところI2Cモジュール内で5Vにプルアップされていたので、今回は外部でプルアップ抵抗はつけていない。
ちなみに、Arduino Uno Rev.3の回路図を見るとI2Cのピンは(SDA/SCL)はA4、A5ピンともつながっているようなので、こちらにつないでもOK。
https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
LCDを制御するライブラリをインストールする
今回は以下のLiquidCrystal I2Cというライブラリの最新版をインストールして使う。
https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/
こちらのページのReleasesから最新版の1.1.2をクリックしてzipファイルをダウンロードする。このzipファイルを、ArduinoのIDEで「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で選択してインストールする。
ライブラリをインストールしたら、以下のように「スケッチ」→「ライブラリをインクルード」にLiquidCrystal I2Cが表示される。こちらをクリックすればLiquidCrystal I2Cのヘッダーファイルがソースコードにインクルードされる。
Lチカのプログラムを書いて実行する
LiquidCrystal I2CのgithubページにあるExampleコードを参考にした。
https://github.com/johnrickman/LiquidCrystal_I2C/blob/master/examples/HelloWorld/HelloWorld.pde
今回は以下のようなコードを書いた。
#include LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print("Never Ending"); lcd.setCursor(0,1); lcd.print("Golden Week..."); } void loop() { }
LiquidCrystal_I2C lcd(0x27,16,2)の部分で、0x27は今回使用しているLCD1602 I2CモジュールのデバイスIDで、その次の数字は文字数と列数を表している(今回のLCDは16文字2列)。デバイスIDは部品によって異なるので、自分が使う部品の仕様書を確認のうえ設定する。ただLCD1602のI2Cモジュールは大体このIDになっているようだが。
書き込み後、無事にLCDに文字が表示された。以下が文字を表示している様子。ゴールデンウィークが終わる前だったので、悲痛な叫びを表示させている(?)
次回はまだノープランなのだが、せっかくなので何かしらの部品とLCDを組み合わせて何かやってみたいと思っている。
日記まとめ
Arduinoで遊んでみた軌跡を以下でまとめてます。