본문 바로가기

Information/MICOM & SBC

아두이노(Arduino) MAX7219 7-Segment LedControl

이 글의 원문은 : http://tindevil.com/site/post/3789  입니다.!


아... 포스팅을 한번 날려먹었네요 (ㅠㅠ).. 같은거 다시 쓰는거 정말 힘든데 말이죠..

MAX7129 컨트롤러를 이용해서 7-Segment 2개를 제어하는 아두이노 테스트입니다.
사실 max7219와 segment 를 개별로 주문해서 만들려고 했는데. 뭘 모르고 주문한지라 segment 의 com 극성을 잘 못 주문해서 사용을 할 수가 없는 상태입니다. 혹시 몰라서 완제품을 하나 주문한게 있었는데 그것을 가지고 테스트를 했으며 이렇게 포스팅을 합니다.

upload file

이번에도 UNO를 이용했습니다. (참 문제없이 잘 되네요.. -_-;; 레오나르도는 여전히 말썽많네요. 한놈은 망가졋네요 부트로더 다시 심어야할듯... 에효)

MAX7219하고는 SPI통신을 합니다. 사진처럼 8,9,10번을 할당하고 전원은 5.5v를 인가해주세요.
(첨에 당연히 3.3v일줄 알고 그렇게 하려다가 오작동을 해서 애먹었네요.. 데이터시트를 미리 보는 습관을 가져야 겠어요)

아두이노 스케치를 볼게요.


//We always have to include the library
#include "LedControl.h"

/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 10 is connected to the DataIn
pin 8 is connected to the CLK
pin 9 is connected to cs
We have only a single MAX72XX.
*/
LedControl lc=LedControl(10,8,9,1);



void setup() {
/*
The MAX72XX is in power-saving mode on startup,
we have to do a wakeup call
*/
lc.shutdown(0,false);
/* Set the brightness to a medium values */
lc.setIntensity(0,8);
/* and clear the display */
lc.clearDisplay(0);

}
void loop() {
int i = 0;
for(i=0; i<=7; i++) {
lc.clearDisplay(0);
lc.setDigit(0,i,1,false);
delay(300);
}
}


중요한걸 Loo내의 코드란걸 아시죠? setup은 초기화 구문이구요..
설명을 드리면 0~7번이 숫자의 표시위치입니다. 7segment 가 총 8개 이니깐 순서대로 0번부터~7번까지입니다.
각 위치에 숫자1을 돌아가면서 표시하는 예제인거죠..

기억해야할건 화면을 지우는 clearDisplay 와 숫자를 표시하는 setDigit 쯤 되겠네요..
라이브러리의 H를 보면 setChar도 있더군요.. 해보니 a~f 까지는 잘 표현되구요. 나머지 문자는 등록되어 있지않군요.
7-segment 자체로 표시불가한 단어들도 있으니까요..

막상 성공하면 정말 단순한건데 모르고 시작할때는 막연히 어렵네요 이것도 마찬가지이구요.
라이브러리 찾는것도 일이며 ㅋㅋ 전원도 모르도 3.3했었고 ^^

그래도 헤매면서 하니 기억은 잘 될듯합니다.!!

이렇게 끝!