아두이노 장비와 연결하여 문자, 숫자 또는 그래픽 까지를 보여주는 다양한 패널들이 존재한다.
아래의 사진은 필자가 가진 패널들 중 일부를 보여준다.
디지털 숫자 형태를 보여주는 7 segment 디스플레이부터, 128x64 dot의 그래픽 화면을 보여주는 디스플레이까지 다양한 종류가 있지만, 실제 통용되는 전체 디스플레이의 1/10 도 되지 않는 종류이다. 패널의 크기는 초록색 바탕의 눈금이 1cm 간격이니 감안하시라.
겉모양뿐 아니라 연결하는 방법도 가지가지 인, 수많은 종류의 디스플레이들이 판매되고 있고, 필요에 따라 패널을 구해서 사용해야 하는데, 디스플레이에 따라 사용하는 방법도 모두 다르니 기본 원리를 먼저 배워야 한다.
이번 강좌에서는 단순히 숫자 데이터만을 화면에 디스플레이할 것이므로 7 segment 디스플레이가 4개 장착된 4 digit display를 사용해 보겠다. (위 그림 좌측 하단의 보이는 부품)
이 부품의 이름음 TM1637이고 크게 확대한 디스플레이의 구성은 아래와 같다.
더 복잡하고 다양한 디스플레이들이 많이 있겠지만 인터페이스에 따라 복잡한 경우 핀을 16개씩이나 연결해야 하는 디스플레이를 처음 사용하기는 힘들고, 당장은 디지털 형태의 숫자만을 보여주는 7 Segment 디스플레이에 대한 이해도 필요하기 때문에 TM1634로 첫 번째 디스플레이 공부를 하려는 것이다.
실물의 뒷면은 아래 사진과 같고,
이전 강좌의 회로에 이 부품을 연결한다.
CLK => 2 번핀
DIO => 3 번핀
VCC => 5V
GND => GND
TM1637 디스플레이를 사용하기 위해서는 온습도계를 사용할 때와 마찬가지로 해당 라이브러리를 연결해야 하는데, 이번에는 Tools-Manage Libraries에서 TM1637을 검색하여 아래의 라이브러리를 설치한다.
이제 사용할 준비는 끝났으므로 아래와 같이 코드를 수정해서 실행해 보자.
1~2번 줄은 TM1637의 사용을 위한 라이브러리를 포함하는 명령이다.
#include <Arduino.h>
#include <TM1637Display.h>
8~9번 줄은 아두이노 2번 핀을 CLK 핀에 연결하고, 아두이노 3번 핀을 DIO핀에 연결한다는 것.
12번 줄 TM1637Display display(CLK, DIO);
는 해당 내용을 지정하는 명령이다.
setup의 다음 내용은 기본 셋업 내용으로 옆의 코멘트처럼 발기와 내용 지우기를 진행하는 명령이다.
display.setBrightness(0x0f); // 디스플레이의 밝기 조절
display.clear(); // 디스플레이 내용 지우기
앞선 강좌에서는 temp와 humid를 실수인 float의 변수로 지정했지만 디스플레이 패널에 보여주기 위하여 정수(int)로 지정하였다.
TM1637의 좌우 2개의 숫자 자리에 좌측은 온도 우측은 습도를 표시하려고 한다.
그래서 loop 함수에서는 displayData(int temp, int humid)라는 함수를 부르고 이 함수에서 디스플레이를 책임지게 된다.
31줄의 int data=temp*100+humid;는 temp에 100을 곱하여 좌측 두 자리에 온도를 표시하려 하였고, 이 값에 Humid를 더하여 우측 두 자리에 습도를 표시하도록 하였다.
LCD에 표시를 하는 명령어는 아주 다양하나 우리 예제를 위해서는 다음의 명령어를 사용하려고 한다.
display.showNumberDecEx(data, 0x40, false); // 이 명령어는 4개의 숫자 자리에 data값을 쓰고 가운데 콜론 자리 역시 표시하게 하는 명령어이다.
만일 콜론을 사용하지 않으려면 그 윗줄에 코멘트 처리한 display.showNumberDec(data, false);를 사용하면 된다.
실행하면 아래와 같이 온도와 습도가 표시된다.
이 프로그램은 온도와 습도를 2 자릿수에 넣는다는 가정 하에 만들어진 프로그램이므로 이를 감안하고 수행해야 하며, 구성에 따라 온도만 보이거나 습도만 보이는 화면을 반복하고 우측에 그 기호를 디스플레이하는 것도 가능하다.
4자리 숫자 디스플레이를 배운 이유는 손에 들고 사용하는 게임을 만들 때 작은 화면에서 점수를 보이거나 현재의 진행 상황을 보이는 등에 활용도가 높아서 이다.
화려한 그래픽 디스플레이가 가능한 패널은 차후에 배워보도록 하자.