?>

Hard Copy World

HCW

Input, display and etc

Home > Info >

Input, display and etc

8×8 Dot LED Matrix (MAX7219)

페이지 정보

작성자 최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일14-10-05 00:52 조회4,612회 댓글0건

본문

 

1. 8x8 Dot LED Matrix (MAX7219)

 

8x8 LED Matrix로 글자와 이미지 출력에 이용합니다. 모듈을 여러개 일렬로 연결해서 사용하면 LED Matrix 전광판 처럼 사용할 수도 있습니다. 비교적 저렴한 가격도 장점.

LED Matrix 와 구동칩인 MAX7219 및 필요한 회로 부품들을 DIY 킷 형태로 팔기도 하고, 모두 조립된 형태로 팔기도 합니다. 사용되는 부품은 아래를 참고하세요.

  • 1x PCB board
  • 2x 5P bent pin single row pin
  • 1x 24P IC socket
  • The 1x Inline MAX7219 chip
  • 1x 10uF electrolytic capacitor
  • 1x 0.1uF ceramic capacitor
  • 1x 10K resistor
  • 2 Block 2x 8P round hole (pitch 2.54mm)
  • 1x 3mm 8 * 8 common cathode red dot

직접 DIY하는 과정은 [링크]의 내용을 참고하시면 됩니다.

20120914115804-ebfd2

 

 

2. 연결방법

 

여기서는 1개의 모듈만을 사용합니다. MAX7219 칩이 있는 쪽 5개 핀을 이용하시면 됩니다. 반대쪽 핀들은 LED Matrix를 여러개 연결해서 하나처럼 동작시킬 때 사용합니다.

LED Matrix        Arduino
VCC                        5V
GND                       GND
DIN                         D12
CS                          D10
CLK                        D11

 

아두이노와 MAX7219 칩간 통신을 위해 SPI 인터페이스를 사용합니다. 해외 포럼을 보니 위와 같이 사용하는게 일반적이네요. [링크] 참고

  • Pins 10-11-12 is bitbanging. (SS-MOSI-MISO)
  • Pins 10-11-13 are needed for actual SPI. (SS-MOSI-SCK)

20120914120004-08659

 

 

3. 소스코드 (스케치)

 

먼저 LedControlMS 라이브러리를 설치해야 합니다. [링크]를 참고하셔서 라이브러리를 설치하세요.

 

라이브러리에 포함되어 있는 예제는 좀 부실해서... 아래 링크에 있는 예제를 사용하세요. LED 매트릭스를 제어하기 위한 각종 코드를 충실히 담고 있습니다. 소스가 길기 때문에 여기서는 중요한 부분만 발췌해 보겠습니다.

 

예제 스케치를 살펴보면 먼저 클래스 인스턴스를 하나 생성하는데, 이 때 LED 매트릭스가 연결된 디지털 핀 넘버를 지정해줘야 합니다.

LedControl lc=LedControl(12,11,10,1);
  • pin 12 --> DataIn
  • pin 11 --> CLK
  • pin 10 --> CS

 

setup() 초기화 코드를 보면 LED 매트릭스 초기화를 합니다.

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
}

위 코드를 그대로 사용하면 됩니다. lc.setIntensity(0,8); 함수는 LED 매트릭스의 밝기를 조절하는 함수입니다. 0은 LED 매트릭스 넘버 (아두이노와 가까운 매트릭스부터 0, 1, ..., n) 두 번째 숫자 8 은 밝기를 의미합니다. 밝기는 숫자가 작을수록 어둡습니다.

 

이후 setup() 함수 안에서 LED 조작하는 각종 방법이 나옵니다. 아래 함수들을 이용해서 LED 조작이 가능합니다.

  • lc.setLed(0,0,0,true); // 0번 모듈, X-Y 좌표 (0, 0) LED on
  • lc.setLed(0,7,0,true); // 0번 모듈, X-Y 좌표 (7, 0) LED on
  • lc.setRow(0,1,0x0C); // 0번 모듈, row 값이 1인 LED 8개를 1byte 데이터(0x0C = 00001100)로 한번에 제어
  • lc.setColumn(0,7,iconHeart[0]); // 0번 모듈, column 값이 7인 LED 8개를 1byte 데이터(iconHeart[0])로 한번에 제어
  • lc.writeString(0,"Hola Mundo"); // 문자열 출력 함수 (모듈 넘버, 출력할 문자열)
  • lc.clearAll();  // 모든 LED off

아래 그림처럼 row, column 을 X, Y 좌표처럼 생각하면 됩니다. 좌표의 시작점 (0,0)은 좌측 아래입니다.

06_led_matrix_ori

 

loop() 함수 안에서는 특정 ASCII 문자 하나를 표시할 때 어떻게 가능한지 보여줍니다.

  • lc.displayChar(0, lc.getCharArrayPosition(ch));  // 0번 모듈에 ch 에 저장된 아스키 문자를 출력

 

 

 

 

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.