아두이노로 7 segment LED 제어하기 #1 모듈 소개 및 라이브러리 설치

2018. 3. 13. 14:11

Arduino/Display

Using 7 segments LED with Arduino

7 segments LED는 전자기기에서 널리 사용하는 아주 익숙한 디스플레이 장치일 것입니다. 그 만큼 아두이노 프로젝트에서도 많이 사용되고 있고, 저렴한 가격에 또 사용하기도 쉽습니다. 앞으로 3회에 걸친 글을 통해, 아두이노에 이 장치를 연결하여 사용하는 내용을 간단히 다루겠습니다.

7 세그먼트 LED

7 세그먼트는 7개의 LED를 이용하여 숫자나 문자를 표시하도록 구성한 디스플레이 장치입니다. 계산기나 디지털 시계에서 많이 사용되는 방식이니 따로 설명할 필요는 없을 듯 합니다.

숫자 한 자리를 표현하기 위해 총 7개의 LED가 필요하기 때문에 이와 같은 이름이 붙었으며, 여기에 소수점을 위한 것까지 총 8개의 LED로 숫자 한 자리를 구성하거나, 오늘 소개할 모듈처럼 시계 표현을 위한 콜론(시와 분 사이에서 1초마다 깜박이는...)을 추가하여 구성합니다.

이 7 세그먼트 LED를 쉽게 사용하기 위해, 드라이버 칩과 전원 및 제어 포트 등을 하나의 기판으로 만든 제품들도 많습니다. 이 글에서 소개할 제품도 해당되는데, 드라이버 칩에 맞는 라이브러리만 찾아 설치하면 쉽게 프로젝트에 적용할 수 있습니다.

이 글에서 사용할 7 세그먼트 LED 모듈 소개

이전 연재에서 사용한 LED matrix 모듈의 제조사 RobotDyn의 7 세그먼트 모듈에 대해서 먼저 소개하겠습니다. 그리고, 같은 칩을 사용하는 저렴한 제품들이 아주 많습니다. 꼭 이 제품이 아니어도 결과는 동일하게 보실 수 있을 겁니다.

포장 상태입니다. '알리'에서 구입했고, 3천원이 약간 넘는 가격이었습니다. 색상을 흰색이고 빨간색으로 고른다면 더욱 저렴한 가격에 구할 수 있습니다. 제품 라벨도 깔끔하게 잘 되어 있네요. 더 저렴한 제품들은 스폰지도 없고, 라벨도 제대로 표시되어 있지 않아 뭘 산건지 모를 때도 자주 있습니다.

모듈 사진입니다. 기판 크기도 적당하고, 보호 비닐도 붙어 있네요. 검정 색상도 마음에 듭니다. 이 모듈은 가운데 콜론(:)을 표시하는 대신, 각 숫자 아래쪽의 도트는 표시하지 못합니다.

모듈 뒷 면입니다. 역시 다른 저렴한 제품들 보단 깔끔한 편입니다. 제품 상단에 작은 글씨로 사용할 라이브러리 명이 인쇄되어 있습니다. 이 모듈을 사용하기 위한 설명은 홈페이지를 가봐도 저 문구가 전부입니다. 다행히 인터넷 검색으로 쉽게 내용을 찾아 볼 수 있기 때문에 마음 상하진 않았습니다!^^

색상은 White인데, 대부분이 더 저렴한 Red 색상이고 White는 그리 많진 않네요! 연결 포트는 총 4핀입니다. 전원 2핀 외에 딱 2개의 디지털 연결만 필요로 합니다.

아두이노와의 연결 방법입니다. 전원은 5V이므로 아두이노에서 바로 입력받도록 했습니다. 나머지 제어 핀은 아무 디지털 핀이나 연결 가능한데, 기본 예제와 동일하게 2번(CLK), 3번(DIO)에 연결하였습니다.

전원을 연결하면 기판 뒷 쪽, 표시된 부분의 녹색 LED가 점등됩니다.

라이브러리 설치하기

이 모듈에 사용된 칩은 "hm1637"이고, 검색해보면 여러 개의 라이브러리를 찾을 수 있습니다.어느 것을 사용해도 큰 차이는 없을 듯 하고, 여기서 제가 사용한 라이브러리는 아래와 같습니다. 다른 라이브러리 보다는 설명도 잘 되어있고, 함수도 여럿 제공하고 있습니다.

위 링크 따라 이동하여, 최신 버전을 받기 위해 "releases" 항목으로 이동합니다.

"releases" 화면으로 이동하면 위와 같이 다운 링크가 보입니다. 윈도우 환경이라 익숙한 .zip 파일로 받았습니다.

압축 파일을 받은 후, 압축을 풀어 폴더이름을 변경한 상태입니다. 이 라이브러리를 설치하는 방법은 두 가지입니다.

  • 직접 아두이노 라이브러리 디렉토리에 복사하기
  • 아두이노 IDE에서 라이브러리 포함하기 메뉴를 통해 자동으로 설치하기

직접 복사하기 위한 라이브러리 폴더는 두 군데가 있습니다. 하나는 아두이노 IDE 프로그램이 설치된 폴더에 가면 "libraries" 폴더가 있습니다.(제 컴에선 C:\Program Files (x86)\Arduino\libraries) 그 아래에 복사해 넣으면 되고, 또 다른 곳은 "내 문서" 폴더에 가면 아두이노 IDE에서 생산한 소스파일들을 위한 폴더가 있고, 사용자가 설치하는 라이브러리들을 위한 "libraries" 폴더가 또 있습니다. 여기에 복사하시면 됩니다. 아무래도, "내 문서" 쪽이 접근이 더 편하겠죠!!

가장 좋은 방법은 자동 설치입니다. 아두이노 IDE는 압축 파일만 지정해주면 알아서 옮겨주는 기능이 있습니다.

위 화면과 같이, 아두이노 IDE에서 스케치 메뉴 - 라이브러리 포함하기 메뉴로 이동하면 팝업 메뉴에서 ".ZIP 라이브러리 추가..." 항목이 있습니다. 클릭하여 나타나는 파일 선택 대화상자에서 해당 라이브러리 압축 파일을 지정해주면 바로 복사됩니다.

위와 같이 "파일" 메뉴의 "예제" 항목으로 가면, 아래쪽에서 해당 라이브러리의 예제가 보인다면 정상적으로 설치된 것입니다. 테스트를 위해 위 파일을 선택해서 불러 옵니다. 하지만, 아직은 실행해도 LED가 반응이 없을 수 있습니다.

테스트 예제 실행

테스트 실행에 앞서, 라이브러리 소스 한 군데를 고쳐야 합니다. 특히, 이베이나 알리 등에서 저처럼 저렴한 제품을 구입하셨다면 이 라이브러리가 작동하지 않을 수 있습니다. 저도 처음에 모듈이 고장난 줄 알고 새 제품 포장 뜯어서 계속 테스트했는데 안되더군요.

우선, 해당 라이브러리 소스파일을 찾아야 합니다. "TM1637Display.cpp" 검색하시거나, 윈도우 탐색기에서 해당 위를 직접 찾아가셔서 파일을 텍스트에디터(메모장 등)로 불러 옵니다.

제 컴퓨터는 D:\Documents\Arduino\libraries\TM1637-1.1.0 여기에 있습니다.

void TM1637Display::bitDelay()
{
	delayMicroseconds(100);
}

위 코드가 수정한 코드입니다. TM1637Display.cpp 파일의 142번 행쯤에 있는데, 원래 delayMicroseconds(50)으로 되어있는 것을 위 코드와 같이 100으로 올려 주고 저장합니다. 이것만 하면 끝입니다.

라이브러리의 기본 예제를 실행하면 여러 가지 값을 출력한 후 마지막으로 위와 같이 "done"을 출력한 상태로 멈추게 됩니다. 소스 파일만 잘 수정된 후에 문제 없이 잘 실행되었습니다.

이상으로, 7 세그먼트 모듈에 대한 기본적인 소개를 마치고 다음 글에서 다른 예제를 통하여 좀 더 알아보겠습니다.

Comments