안녕하세요, 여러분! 오늘은 8x8 도트 매트릭스와 MAX7219CNG 드라이버를 사용하여 문자, 기호 및 이미지를 표시하는 방법을 설명하겠습니다. 도트 매트릭스는 휴대폰, 텔레비전 등 다양한 현대 디스플레이 기술에 사용되는 LED 어레이로, LED를 이용한 디스플레이에 관심이 많은 분들께 특히 유용합니다.
도트 매트릭스란?
도트 매트릭스는 2차원 패턴으로 배열된 LED 어레이로, 각 LED는 독립적으로 제어되어 다양한 이미지를 표시할 수 있습니다. 일반적인 8x8 도트 매트릭스 장치는 64개의 LED로 구성되며, 이러한 LED는 행과 열로 제어됩니다.
MAX7219 드라이버
MAX7219는 도트 매트릭스를 보다 쉽게 제어할 수 있도록 돕는 IC입니다. 이 드라이버는 16개의 출력 라인을 통해 64개의 LED를 구동하며, 24개의 핀 중 5개 핀만을 I/O에 연결하여 제어할 수 있습니다. 또한, LED의 밝기를 제어할 수 있는 기능도 있습니다.
회로 연결
먼저, MAX7219 드라이버를 Arduino에 연결하는 방법을 살펴보겠습니다.
- 전원 및 접지 연결:
- VCC를 Arduino의 5V 핀에 연결합니다.
- GND를 Arduino의 GND 핀에 연결합니다.
- 제어 핀 연결:
- DIN를 Arduino의 디지털 핀 (예: D11)에 연결합니다.
- CLK를 Arduino의 디지털 핀 (예: D13)에 연결합니다.
- CS를 Arduino의 디지털 핀 (예: D10)에 연결합니다.
이제 도트 매트릭스를 MAX7219에 연결합니다. 각 LED는 MAX7219의 출력 라인(Q0-Q7 및 DP)과 연결됩니다.
예제 코드
다음은 MAX7219와 도트 매트릭스를 사용하여 간단한 텍스트를 표시하는 예제 코드입니다:
#include <LedControl.h>
// Define the pins used for the connections
int DIN = 11; // Data input
int CLK = 13; // Clock input
int CS = 10; // Load (CS)
LedControl lc = LedControl(DIN, CLK, CS, 1); // Define LedControl object
void setup() {
lc.shutdown(0, false); // Wake up displays
lc.setIntensity(0, 8); // Set brightness level (0 is min, 15 is max)
lc.clearDisplay(0); // Clear display register
}
void loop() {
lc.setRow(0, 0, B10101010); // Example pattern for row 0
delay(500);
lc.setRow(0, 1, B01010101); // Example pattern for row 1
delay(500);
}
#include "LedControl.h" // 8x8 매트리스 라이브러리
#define A { 0x7E, 0x88, 0x88, 0x88, 0x7E } // A
#define R { 0xFE, 0x90, 0x98, 0x94, 0x62 } // R
#define D { 0xFE, 0x82, 0x82, 0x44, 0x38 } // D
#define U { 0xFC, 0x02, 0x02, 0x02, 0xFC } // U
#define I { 0x82, 0xFE, 0x82, 0x00, 0x00 } // I
#define N { 0xFE, 0x20, 0x10, 0x08, 0xFE } // N
#define O { 0x7C, 0x82, 0x82, 0x82, 0x7C } // O
#define SP {0x00, 0x00, 0x00, 0x00, 0x00 } // Space
#define DIN 12 // DIN을 12번핀에 연결
#define CLK 11 // CLK를 11번핀에 연결
#define CS 10 // CS를 10번핀에 연결
#define NUM_MATRIX 1 // 연결된 매트릭스 개수
LedControl matrix = LedControl(DIN, CLK, CS, NUM_MATRIX); // matrix 객체 생성(DIN, CLK, CS, 연결된 개수)
uint8_t sentence[][5] = { A, R, D, U, I, N, O, SP }; // 출력 문자 2차원 배열
int num = sizeof(sentence) / 5; // 출력 문자 개수
int position[18] = {-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12}; // 출력 위치
void setup()
{
matrix.shutdown(0, false); // 첫번째(0) 매트릭스, 절전모드 wake-up(false)
matrix.setIntensity(0, 5); // 첫번째 매트릭스, 밝기 5 (0~15)
matrix.clearDisplay(0); // 첫번째 매트릭스, 화면 지움
}
void loop() {
for (int k = 0; k < num; k++) // 글자수 만큼 회전
{
for (int j = 18; j >= 5; j--) // 한 문자를 5 + 8 + 5 만큼 회전
{
for (int i = 0; i < 5; i++) // 한 문자만 출력
{
matrix.setColumn(0, position[i + j - 5], sentence[k][i]); // 첫번째 매트릭스, 각각 열, 행 출력
}
delay(50); // 출력 속도 조절
matrix.clearDisplay(0); // 첫번째 매트릭스, 화면 지움
}
}
}
모듈 확장
여러 개의 도트 매트릭스 모듈을 연결하려면, 이전 모듈의 출력 핀을 새 모듈의 입력 핀에 연결합니다. 예를 들어, 이전 모듈의 DOUT 핀을 새 모듈의 DIN 핀에 연결하면 됩니다. 이를 통해 도트 매트릭스를 쉽게 확장할 수 있습니다.
결론
이번 포스트에서는 8x8 도트 매트릭스와 MAX7219CNG 드라이버를 Arduino에 연결하고 제어하는 방법에 대해 알아보았습니다. 이 기술을 사용하면 간단하게 LED 디스플레이를 만들 수 있으며, 다양한 패턴과 이미지를 표시할 수 있습니다. 프로젝트 진행 중 궁금한 점이 있으면 언제든지 문의해 주세요!
이 블로그 포스트가 여러분의 프로젝트에 도움이 되길 바랍니다. 다양한 가능성을 탐구하며 전자 프로젝트의 세계를 즐겨보세요! 🎉✨
'아두이노 러닝보드 > 아두이노 러닝보드 하드웨어설계' 카테고리의 다른 글
74HC595 시프트 레지스터 연결하기 💡 (1) | 2024.12.13 |
---|---|
DS1307 RTC 연결하기: 실시간 시계 구현하기 ⏰ (1) | 2024.12.13 |
7 세그먼트 디스플레이 연결하기 💡 (1) | 2024.12.13 |
Arduino 보드에 LCD 연결하기 💡 (1) | 2024.12.13 |
Eagle을 사용한 회로도 설계: 2단계 - Arduino에 LCD 연결하기💡 (1) | 2024.12.13 |