brunch

You can make anything
by writing

C.S.Lewis

by 준호씨 May 10. 2018

번외편 - LCD 응용편. CustomCharacter

픽셀아트

앞서 LCD 편에서 LCD1602 는 기본적으로 영어와 일본어와 일부 특수문자만 표현가능하다고 하였다. 그리고 CustomCharacter 예제를 참고 하면 한글을 나타낼 수도 있다고 하였다. 이번장에서는 CustomCharacter 에 대하여 간단히 알아 보고자 한다.


우선 예제 프로젝트를 열어 보자. File -> Examples -> LiquidCrystal -> CustomCharacter 순서로 열어 보면 된다.


모든 코드에 대한 설명은 건너 뛰고 다음과 같은 코드가 보인다.

평소에 보던 코드와는 좀 낯설어 보인다. byte 라는 자료형으로 된 데이터 8개를 나열한 배열을 선언한 것이다. 자세한 설명은 생략한다. 8개의 값들 앞에는 0b 가 붙어 있는데 binary 2진수로 값을 표현한다는 말이다. 이부분도 크게 신경 쓸 필요 없다. 0b 뒤에 있는 0과 1이란 값이 주목하자.

LCD1602 은 가로 16칸 세로 2줄로 되어 있다. 각 칸은 가로 5, 세로 8개의 점(픽셀)로 이루어져 있다. 위에 있는 배열은 한칸에 들어갈 점을 어떻게 찍느냐를 표현한 것이라고 보면 쉽다.

0 은 칠하지 않는 다는 의미이고 1은 칠한다는 의미이다. 종이가 있다면 직접 칸을 그리고 색칠 해 보자. 다음과 같이 그려졌다. 반듯하지는 않지만 하트 ♥ 모양 처럼 보인다.

십자수를 해 본 사람은 십자수를 떠올릴 수 있을 것이고, 마인크래프트 게임을 즐겨 한다면 마인크래프트가 떠오를지도 모른다. 5칸 x 8칸 으로 이루어진 공간에 네모로된 점으로만 하트를 그려야 된다면 이정도가 최선일 것이다.


CustomCharacter 예제를 실행 시켜 보면 "I" 와 "Arduino!" 사이에 하트 모양이 나타나는 것을 볼 수 있다.


CustomCharacter 예제에는 heart 외에도 smiley (웃는 얼굴), frownie (웃는 얼굴에서 입모양을 뒤집은 것), armsDown (팔 내린 사람), armsUp (팔 올린 사람) 이 만들어져 있다.


초기화를 담당하는 setup 함수에는 다음과 같은 내용들이 있다.

LCD1602 에는 0번~7번 까지 내가 직접 만든 문자나 그림을 등록 할 수 있다. 0번에는 하트, 1번에는 웃는 얼굴 등을 순서대로 저장 시킨것이다.


저장시킨 문자나 그림을 LCD 에 나타내고 싶을 때는 lcd 라이브러리에 있는 write 함수를 이용하면 된다.

영어를 나타낼 때는 lcd.print 함수를 이용했는데 0번에 등록한 하트를 나타낼 때는 lcd.write(byte(0)); 으로 나타낸 것을 볼 수 있다. 그냥 0 이 아니고 byte(0) 으로 한 건 write 함수가 byte 형식의 숫자만 사용하기 때문에 0 이라는 숫자가 그냥 숫자가 아니고 byte 형식의 숫자라고 바꿔주는 것이다. 프로그래밍 문법적인 이유이기 때문에 너무 신경 쓰지 말고 넘어 가자. 그냥 문법적으로 저렇게 쓰라고 정했을 뿐이다.


자 이번에는 한글을 LCD 에 출력해 보자. "Arduino" 라고 나온 부분을 한글로 "아두이노"로 바꿔볼 것이다. 다음문자는 "아"를 그린 것이다.

0과 1로 직접 그리는건 좀 고생스럽다. 이런 작업을 손쉽게 해 주는 사이트들이 있다. "Arduino Custom Character Generator" 로 검색해 보면 이러한 작업을 도와주는 사이트들을 찾을 수 있다. 다음과 같이 말이다.

ah, du, ee, no 라는 문자를 완성 한 후 setup 함수 의 내용을 다음과 같이 수정해 주었다.

다음과 같이 출력되면 성공 한 것이다.

아주 예쁘지는 않지만 한글을 알아 먹을 수는 있다. LCD1602 에서 한글을 표현하는 것은 한계가 있다. 왜냐하면 LCD1602 에서 CustomCharacter 를 저장할 수 있는 공간은 8개 뿐이기 때문이다. 한번에 표현할 수 있는 한글은 8개 정도라고 보면 될 것이다. 게다가 복잡한 한글은 한칸에 표현하지 못할 수도 있다. 물론 머리를 잘 굴려 보면 편법이 있을 수는 있겠지만 그러기에는 노력과 시간이 많이 들어갈 것이다.


일단 LCD1602 에서는 간단한 특수 문자 몇개와 한글 몇자 정도 사용 할 수 있는 것에 만족 하도록 하자. 인터넷을 검색 해 보면 LCD1602 에서 표현할 수 있는 게임을 만든 예제들도 있으니 찾아 보는 것도 좋을 것이다. 게임을 플레이 해 보려면 LCD Keypad Shield 를 사용하면 더 좋은데 LCD Keypad Shield 에 대해서는 뒤에서 다루도록 하겠다.

매거진의 이전글 6장 LCD 사용하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari