液晶表示器(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]); }