반응형
안녕하세요.
이번 포스팅에서는 8개의 열과 8의 행으로 이루어져 총 64개의 LED로 구성된 가로8 세로8 배열의 LED에 대해 알아보고 아두이노를 통해 동작시켜 보겠습니다.
8x8 매트릭스 LED는 8개의 행과 8개의 열로 구성된 총 64개의 LED가 배열된 디스플레이 모듈입니다. 각 LED는 행과 열의 교차점에 위치하며, 이를 통해 다양한 문자, 도형 및 애니메이션을 표시할 수 있습니다. 이 매트릭스 LED는 아두이노와 같은 마이크로컨트롤러와 쉽게 연동할 수 있습니다.
※1. 8X8 Dot Matrix LED 구조 및 제어
[ 8x8 매트릭스 LED 구조]
- 행과 열:
- 8x8 매트릭스 LED는 8개의 행(Row)과 8개의 열(Column)로 구성됩니다.
- 각 행과 열은 개별적으로 제어할 수 있으며, 이를 통해 특정 LED를 켜거나 끌 수 있습니다.
- 공통 애노드와 공통 캐소드:
- 매트릭스 LED는 공통 애노드(Common Anode) 또는 공통 캐소드(Common Cathode) 방식으로 설계될 수 있습니다.(사용자의 설계 방식에 따름)
- 공통 애노드 방식에서는 행이 양극이고 열이 음극이며, 공통 캐소드 방식에서는 행이 음극이고 열이 양극입니다.
아래 테스트에 사용한 모듈은1088BS로 오른쪽 모듈입니다.(2개의 핀 위치에 따라 극성이 다릅니다.)
※2. Wiring (배선 연결)
저항은 330[ohm] 사용하였습니다. 100~1000 [ohm]을 사용하세요.
-~
※3. 소스코드 및 동작
하트, 엑스, 다이아몬드, 세모, 네모를 순차적으로 디스플레이 하는 코드를 실행해 보겠습니다.
▶1. 소스코드
코드는 아래와 같습니다. (코드는 첨부파일로 제공해 드립니다.)
const int rowPins[8] = {A0, 12, A2, 13, 5, A3, 7, 2}; const int colPins[8] = {9, 8, 4, A1, 3, 10, 11, 6}; // 'X' 패턴을 나타내는 8x8 배열 byte xPattern[8] = { B10000001, B01000010, B00100100, B00011000, B00011000, B00100100, B01000010, B10000001 }; // '하트' 패턴을 나타내는 8x8 배열 byte HEARTPattern[8] = { B00100100, B01111110, B11111111, B11111111, B11111111, B01111110, B00111100, B00011000 }; // '원' 패턴을 나타내는 8x8 배열 byte CIRCLEPattern[8] = { B00011000, B00111100, B01111110, B11111111, B11111111, B01111110, B00111100, B00011000 }; // '세모' 패턴을 나타내는 8x8 배열 byte TRIPattern[8] = { B00011000, B00011000, B00111100, B00111100, B01111110, B01111110, B11111111, B11111111 }; // '네모' 패턴을 나타내는 8x8 배열 byte RECTPattern[8] = { B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111 }; void setup() { // 행 핀을 출력으로 설정 for (int i = 0; i < 8; i++) { pinMode(rowPins[i], OUTPUT); digitalWrite(rowPins[i], LOW); // 초기화: 모든 행을 LOW로 설정 } // 열 핀을 출력으로 설정 for (int i = 0; i < 8; i++) { pinMode(colPins[i], OUTPUT); digitalWrite(colPins[i], HIGH); // 초기화: 모든 열을 HIGH로 설정 (LED 비활성화) } } void loop() { for (int R=0; R<50; R++){ for (int row = 0; row < 8; row++) { digitalWrite(rowPins[row], HIGH); // 현재 행 활성화 for (int col = 0; col < 8; col++) { digitalWrite(colPins[col], bitRead(HEARTPattern[row], col) == 1 ? LOW : HIGH); // 열 제어 } delay(2); // 짧은 지연 (멀티플렉싱 효과) digitalWrite(rowPins[row], LOW); // 현재 행 비활성화 } } for (int R=0; R<50; R++){ for (int row = 0; row < 8; row++) { digitalWrite(rowPins[row], HIGH); // 현재 행 활성화 for (int col = 0; col < 8; col++) { digitalWrite(colPins[col], bitRead(xPattern[row], col) == 1 ? LOW : HIGH); // 열 제어 } delay(2); // 짧은 지연 (멀티플렉싱 효과) digitalWrite(rowPins[row], LOW); // 현재 행 비활성화 } } for (int R=0; R<50; R++){ for (int row = 0; row < 8; row++) { digitalWrite(rowPins[row], HIGH); // 현재 행 활성화 for (int col = 0; col < 8; col++) { digitalWrite(colPins[col], bitRead(CIRCLEPattern[row], col) == 1 ? LOW : HIGH); // 열 제어 } delay(2); // 짧은 지연 (멀티플렉싱 효과) digitalWrite(rowPins[row], LOW); // 현재 행 비활성화 } } for (int R=0; R<50; R++){ for (int row = 0; row < 8; row++) { digitalWrite(rowPins[row], HIGH); // 현재 행 활성화 for (int col = 0; col < 8; col++) { digitalWrite(colPins[col], bitRead(TRIPattern[row], col) == 1 ? LOW : HIGH); // 열 제어 } delay(2); // 짧은 지연 (멀티플렉싱 효과) digitalWrite(rowPins[row], LOW); // 현재 행 비활성화 } } for (int R=0; R<50; R++){ for (int row = 0; row < 8; row++) { digitalWrite(rowPins[row], HIGH); // 현재 행 활성화 for (int col = 0; col < 8; col++) { digitalWrite(colPins[col], bitRead(RECTPattern[row], col) == 1 ? LOW : HIGH); // 열 제어 } delay(2); // 짧은 지연 (멀티플렉싱 효과) digitalWrite(rowPins[row], LOW); // 현재 행 비활성화 } } } |
▶2. 하드웨어 연결 및 동작 확인
다양한 모양이 순차적으로 출력됨을 확인할 수 있습니다.
이상으로 아두이노에서 8X8 Matrix dot LED를 다루는 방법에 대한 설명을 마치겠습니다.
다름 포스트에서 3색 Color LED를 다루는 방법에 대해 다루겠습니다.
감사합니다.
반응형
'Embedded System > Arduino Board' 카테고리의 다른 글
[Arduino] 아두이노 택트 스위치로 LED제어 (9) (1) | 2024.06.07 |
---|---|
[Arduino] 아두이노 3색 LED 제어하기(빨 초 파 흰)_Common Cathode (8) (0) | 2024.06.07 |
[Arduino] 아두이노 4Digit 7Segment(4자리 FND)제어하기 (6) (0) | 2024.06.02 |
[Arduino] 아두이노 Common Anode 7Segment(FND) 제어하기 (5) (0) | 2024.05.22 |
[Arduino] 아두이노 Common Cathode 7 Segment(FND) 제어하기 (4) (0) | 2024.05.22 |