6-4 사용자 정의 문자열의 출력

공부하는 학생 A·2024년 2월 6일
0

아두이노 

목록 보기
30/74

사용자 정의 문자열

I2C LCD1602 표시장치는 알파벳이나 숫자 등은 lcd.print( ) 함수를 이용하여 쉽게 출력할 수 있지만 한글이나 한자, 특수문자 등은 사용자 정의 문자를 설정하여 표시해야 한다. 사용자 정의 문자의 크기는 5x8이며, 8바이트의 배열로 정의되는 사용자 정의 문자는 하위의 5비트만 사용한다.

사용자 정의 문자를 생성할 때에는 createChar(n,char_name) 함수를 사용하며, LCD 표시 장치에 출력하기 위하여 write(byte(n)) 사용자 정의 문자로 정의할 수 있는 문자는 최대 8개이며 n은 0에서 7까지의 정수를 가질 수 있다.

lcd.createChar(n, char_name);
lcd.setCursor(i, j); // j 번째 줄 i 번째 칸으로 이동
lcd.write(byte(n));

스케치 6-6 사용자 정의 문자열의 출력

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

byte char_00[8] = {0x00, 0x0E, 0x1B, 0x11, 0x11, 0x1B, 0x0E, 0x00};  // ㅇ
byte char_01[8] = {0x08, 0x08, 0x08, 0x0E, 0x08, 0x08, 0x08, 0x08};  // ㅏ
byte char_02[8] = {0x1F, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00};  // ㄷ
byte char_12[8] = {0x1F, 0x04, 0x04, 0x04, 0x04, 0X00, 0X00, 0X00}; // ㅜ
byte char_05[8] = {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};  // ㅣ
byte char_06[8] = {0x00, 0x10, 0x10, 0x10, 0x1E, 0x00, 0x00, 0x00};  // ㄴ
byte char_16[8] = {0x04, 0x04, 0x04, 0x04, 0x1F, 0x00, 0x00, 0x00};  // ㅗ
byte heart[8] = {0x00, 0x0A, 0x1F, 0x1F, 0x1F, 0x0E, 0x04, 0x00};    // 하트

void setup()
{
  lcd.init();         // I2C_LCD의 초기화             
  lcd.backlight();   // I2C_LCD의 백라이트 켜기
  // LCD 출력 문자 8개까지만 생성 가능
  lcd.createChar(0, char_00); // 정의된 문자 char_00(‘ㅇ’)을 0번 배열에 저장
  lcd.createChar(1, char_01);
  lcd.createChar(2, char_02);  
  lcd.createChar(3, char_05);  
  lcd.createChar(4, char_06);   
  lcd.createChar(5, char_12);  
  lcd.createChar(6, char_16);   
  lcd.createChar(7, heart);  
  lcd.clear();
}

void loop() {
  lcd.setCursor(0, 0); // 첫 번째 줄 첫 번째 칸으로 이동
  lcd.write(byte(7)); // 7번 배열에 저장된 heart 문자 출력
  lcd.setCursor(2, 0);
  lcd.write(byte(0)); // ㅇ
  lcd.setCursor(3, 0);
  lcd.write(byte(1)); // ㅏ
  lcd.setCursor(4, 0);
  lcd.write(byte(2)); // ㄷ  
  lcd.setCursor(4, 1);
  lcd.write(byte(5)); // ㅜ  
  lcd.setCursor(6, 0);
  lcd.write(byte(0)); // ㅇ  
  lcd.setCursor(7, 0);
  lcd.write(byte(3)); // ㅣ  
  lcd.setCursor(8, 0);
  lcd.write(byte(4)); // ㄴ  
  lcd.setCursor(8, 1);
  lcd.write(byte(6)); // ㅗ   
}

스케치 6-6 실행결과

profile
Shine like a star, Just like a star

0개의 댓글