液晶表示器(LCD)は現在TVやスマートフォンで主流になっている表示方法です。ここでは、小型の文字(英数字)を16文字2行を表示するLCDを利用して、自前で文字表示をする方法を紹介します。別の章で I2C接続のLCDを紹介しています。




#include <LiquidCrystal.h>LiquidCrystal lcd(12, 10, 5, 4, 3, 2); では液晶に接続する端子の番号と LCD の名前を指定します。端子は順に、RS、EN、DB7, DB6, DB5, DB4 の端子になります。この値を変更すれば、UNO と LCD の接続端子を変更できます。
//LCD表示試験
//接続
/*LCD 4 pin to UNO pin 12
* LCD 6 pin to UNO pin 10
* LCD 11 pin to UNO pin 5
* LCD 12 pin to UNO pin 4
* LCD 13 pin to UNO pin 3
* LCD 14 pin to UNO pin 2
* VoはGND端子に接続
* 表示が黒くなる場合 5.6K の抵抗の値を調整する
*/
// include the library code:
#include <LiquidCrystal.h>
// 液晶(LiquidCrystal)のインスタンス(lcd)を作成する
//数字はLCDの端子に対応するArduinoの端子番号
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
void setup() {
pinMode(11, OUTPUT);//r/w
digitalWrite(11, LOW);
// LCDの行数(2)と文字数を指定する
lcd.begin(16, 2);
// LCD に文字列を送る
lcd.print("hello, world!");
}
void loop() {
// 文字カーソルを0列 1行に設定する(0行が先頭の行)
lcd.setCursor(0, 1);
// millis() はプログラム開始以後の時間(ミリ秒単位)
lcd.print(millis()/1000);
}

// include the library code:
#include <LiquidCrystal.h>
char cod,i;
byte pat[9];
char top[16],btm[16];
char bar[16];
// lcd の作成
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
void setup() {
pinMode(11, OUTPUT);//r/w
digitalWrite(11, LOW);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
lcd_makebarCode();//棒グラフ表示用のコードを作成
for(i=0;i<16;i++)//グラフデータを作成
bar[i]= i;
lcd_bar(bar,16);// bar配列の8個のデータを表示
}
void loop() {
}
//棒グラフのパターン文字を作成
void lcd_makebarCode(){
for(cod=0;cod<8;cod++){
for(i=0;i<=8;i++) pat[i]=0;
for(i=0;i<=cod;i++) pat[7-i]=0x1F;
//codのコードのパターンをpat[]で定義する
lcd.createChar(cod,pat);
}
lcd.setCursor(0,0);
}
//bar[]の値をnum個棒グラフで表示する
void lcd_bar(char bar[],int num){
lcd.clear();
for(i=0;i<num;i++){
if(bar[i]<=8){
top[i]=' ';
btm[i]=bar[i]-1;
}
else{
top[i]=bar[i]-9;
btm[i]=7;
}
if(bar[i]==0) {
btm[i]=' ';
}
}
lcd.setCursor(0,0);
//delay_us(20);
// lcd_cmd(0x80);
for(i=0;i<num;i++)
lcd.write(top[i]);
lcd.setCursor(0,1);
//delay_us(20);
// lcd_cmd(0xc0);
for(i=0;i<num;i++)
lcd.write(btm[i]);
}