I2Cインターフェース付きLCD1602表示テスト
2017.6.20 JH7UBC
Easy Word MallのI2Cシリアルパラレル変換モジュールを付けたSODIALのLCD1602の表示テストをしました。
(共にAmazonから購入)
一般的にArduinoでは、LCDの表示には、ライブラリを利用しますが、今回は、ライブラリを使わず、
Raspberry Piでテストしたのと同じ手法で、文字を表示します。
Wireライブラリを使いますので、LCDのSDAはArduinoのA4に、SCLはA5に接続します。
LCDのVccは、Arduinoの5Vに、GNDはGNDに接続します。
今回テストしたスケッチです。
/* * I2C LCD1602 Display test * 2017/6/20 * JH7UBC Keiji Hata */ #include <Wire.h> #define addr 0x27 #define LCD_EN 0b00000100//Enable #define LCD_BL 0b00001000//Back Light #define LCD_CMD 0x00 #define LCD_CHR 0x01 #define LCD_LINE1 0x80 #define LCD_LINE2 0xC0 void setup() { Wire.begin(); LCD_init(); LCD_display(); } void LCD_write(byte bits,byte mode){ //High 4bits Write_data((bits & 0xF0) | mode); //Low 4bits Write_data(((bits << 4) & 0xF0) | mode); } void Write_data(byte data){ Wire.beginTransmission(addr); Wire.write(data | LCD_EN | LCD_BL); Wire.write(data | LCD_BL); Wire.endTransmission(); delayMicroseconds(100); } void LCD_init(){ LCD_write(0x33,LCD_CMD); LCD_write(0x32,LCD_CMD); LCD_write(0x06,LCD_CMD); LCD_write(0x0C,LCD_CMD); LCD_write(0x28,LCD_CMD); LCD_write(0x01,LCD_CMD); delay(1); } void LCD_clear(){ LCD_write(0x01,LCD_CMD); delay(1); } void LCD_home(){ LCD_write(0x02,LCD_CMD); delay(1); } void LCD_cursor(byte x,byte y){ if (y == 0){ LCD_write(LCD_LINE1+x,LCD_CMD); } if (y == 1){ LCD_write(LCD_LINE2+x,LCD_CMD); } } void LCD_text(String s){ for (int i=0; i< s.length(); i++){ LCD_write(s.charAt(i),LCD_CHR); } } void LCD_display(){ LCD_text("Hello World!"); LCD_cursor(8,1); LCD_text("JH7UBC"); } void loop() { } |