본문 바로가기
Study/Arduino

CLCD 글자 만들기

by Answer Choi 2018. 7. 13.
반응형


흔히 사용하는 16X2 CLCD는 영어와 주로쓰이는 특수문자 정도만 표현이 됩니다.


1
2
3
4
  lcd.print("Welcome to ");
  lcd.setCursor(0,1);
  lcd.print("Answer's Blog");
  lcd.display(); 
cs


위와 같이 코드를 작성했을때의 모습입니다.

한글을 억지로 작성한다고 한글이 나오지 않습니다.


1
2
3
4
  lcd.print("반갑습니다");
  lcd.setCursor(0,1);
  lcd.print("앤써입니다");
  lcd.display(); 
cs

이렇게 한글로 작성하였더라도



이렇게 깨져서 나옵니다.


한글에 대응되는 code가 저 이상한 문자들이기 때문이죠.


즉 한글에 대응되는 코드가 저장되어 있지 않습니다.


그래서 수동으로 만들어 줘야 합니다.


LCD Custom Character Generator


위 링크를 누르시면 LCD 문자를 쉽게 만들 수 있는 웹페이지에 방문할 수 있습니다.


위 링크로 들어가면 위와 같은 화면이 나오는데


왼쪽이 CLCD의 DOT를 나타낸 것이고, 오른쪽은 그에 대응되는 코드입니다.


실제로 CLCD를 자세히 보시면 한 글자당 8X5의 DOT로 구성되어 있습니다.


마우스로 글자를 만드시면 오른쪽에 코드가 자동으로 만들어 집니다.


마우스로 클릭하면 글자가 만들어지는데,


'앤' 이라는 글자를 만들어 봤는데 좀 허접합니다. 


가로의 DOT가 5칸밖에 되지 않습니다. ㅠ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
byte customChar[] = {
  B00101,
  B11101,
  B11111,
  B11101,
  B00101,
  B00000,
  B10000,
  B11111
};
 
void setup() {
  Serial.begin(115200);
  lcd.begin(16,2);
  lcd.createChar(0, customChar);
  lcd.home();
  lcd.write((byte)0);
}
cs


위에서 만들어준 코드를 그대로 넣어봤습니다.


Line 17에서 write안에 (byte)를 해주셔야 오류가 안생깁니다.



수동으로 만든 글자가 그대로 출력이 되었습니다.


이번에는 '앤써입니다.'를 해보려고 하는데 '써'는 도저히 안되 '서'로 해봤습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
byte customChar[] = {
  B00101,  B11101,  B11111,  B11101,  B00101,  B00000,  B10000,  B11111
};
byte customChar2[] = {
  B01001,  B01011,  B10101,  B10101,  B10101,  B10101,  B00000,  B00000
};
byte customChar3[] = {
  B01001,  B10101,  B01001,  B00000,  B10001,  B11111,  B10001,  B11111
};
byte customChar4[] = {
  B00001,  B10001,  B10001,  B10001,  B10001,  B11101,  B00001,  B00000
};
 
byte customChar5[] = {
  B00010,  B11010,  B10010,  B10011,  B10010,  B11010,  B00010,  B00000
};
 
void setup() {
  Serial.begin(115200);
  lcd.begin(16,2);
  lcd.createChar(0, customChar);
  lcd.createChar(1, customChar2);
  lcd.createChar(2, customChar3);
  lcd.createChar(3, customChar4);
  lcd.createChar(4, customChar5);
  lcd.setCursor(0,0);
  lcd.write((byte)0);
  lcd.write((byte)1);
  lcd.write((byte)2);
  lcd.write((byte)3);
  lcd.write((byte)4);
}
cs


먼저 글자를 만들어 코드를 작성합니다.



출력되었습니다. 


역시 DOT가 부족하다보니 이쁘게는 안됩니다.


좀더 디테일하게 하려면 2자로 한글 1자를 만들던지 해야할 것 같네요^^


한글 외에도 다양하게 사용할 수 있으니 이용해 보시기 바랍니다.

반응형

'Study > Arduino' 카테고리의 다른 글

Arduino bootloader 올리기  (20) 2018.07.20
SD card와 Level shifter  (0) 2018.07.17
SD카드 사용하기  (0) 2018.07.05
ADS1115 16BIT ADC MODULE - Non library  (0) 2018.06.11
ADS1115 16bit ADC Module  (2) 2018.06.08

인기글