산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

드라이버 칩 없이 아두이노 나노로 8x8 LED 매트릭스 직접 제어하기

부품 및 준비물

부품수량
아두이노 나노 R31
8x8 LED 도트 매트릭스 (1088AS 공통 캐소드)1
330Ω 저항 (스로우 홀)1

프로젝트 개요

MAX7219 같은 드라이버 칩이나 라이브러리 없이, 아두이노 나노의 GPIO만으로 8x8 LED 매트릭스(공통 캐소드)를 직접 제어하는 방법입니다. 멀티플렉싱(행 단위 시분할 구동)을 사용하여 16개 핀(행 8 + 열 8)으로 64개 LED를 제어합니다.

추후 MAX7219 사용 버전과 비교하는 튜토리얼도 제작 예정입니다.

소스 코드

1. 전체 LED 순차 점등 테스트

// Mario's Ideas
// 8x8 LED 매트릭스 64개 LED 순차 점등 테스트

// 행 핀 (공통 캐소드: LOW 활성)
#define R1 2  #define R2 3  #define R3 4  #define R4 5
#define R5 6  #define R6 7  #define R7 8  #define R8 9

// 열 핀 (공통 캐소드: HIGH 활성)
#define C1 10  #define C2 11  #define C3 12  #define C4 13
#define C5 A0  #define C6 A1  #define C7 A2  #define C8 A3

void setup() {
  // 모든 핀 출력 모드
  for (int p = 2; p <= 13; p++) pinMode(p, OUTPUT);
  for (int p = A0; p <= A3; p++) pinMode(p, OUTPUT);
  
  // 초기화: 모든 행 HIGH(끄기), 모든 열 LOW(끄기)
  for (int r = R1; r <= R8; r++) digitalWrite(r, HIGH);
  for (int c = C1; c <= C8; c++) digitalWrite(c, LOW);
}

void SelectRow(int row) {
  // 선택된 행만 LOW, 나머지는 HIGH
  digitalWrite(R1, row==1?LOW:HIGH);
  digitalWrite(R2, row==2?LOW:HIGH);
  digitalWrite(R3, row==3?LOW:HIGH);
  digitalWrite(R4, row==4?LOW:HIGH);
  digitalWrite(R5, row==5?LOW:HIGH);
  digitalWrite(R6, row==6?LOW:HIGH);
  digitalWrite(R7, row==7?LOW:HIGH);
  digitalWrite(R8, row==8?LOW:HIGH);
}

void SelectColumn(int col) {
  // 선택된 열만 HIGH, 나머지는 LOW
  digitalWrite(C1, col==1?HIGH:LOW);
  digitalWrite(C2, col==2?HIGH:LOW);
  digitalWrite(C3, col==3?HIGH:LOW);
  digitalWrite(C4, col==4?HIGH:LOW);
  digitalWrite(C5, col==5?HIGH:LOW);
  digitalWrite(C6, col==6?HIGH:LOW);
  digitalWrite(C7, col==7?HIGH:LOW);
  digitalWrite(C8, col==8?HIGH:LOW);
}

void loop() {
  for (int i = 1; i < 9; i++) {
    for (int j = 1; j < 9; j++) {
      SelectRow(i);
      SelectColumn(j);
      delay(100);
    }
  }
}

2. 고양이 이미지 표시 (멀티플렉싱)

// 8x8 LED 매트릭스에 고양이 이미지 표시 (멀티플렉싱)

int pause = 300;
int Cat[8][8] = {
  {1,0,0,0,1,0,0,0},
  {1,1,1,1,1,0,0,0},
  {1,0,1,0,1,0,0,0},
  {0,1,1,1,0,0,0,1},
  {0,0,1,0,0,0,0,1},
  {0,1,1,1,1,0,0,1},
  {0,1,1,1,1,1,0,1},
  {1,0,1,1,1,1,1,0}
};

void setup() { /* 핀 설정 동일 */ }

void SelectRow(int row) { /* 위와 동일 */ }

void Set_LED_in_Active_Row(int col, int state) {
  switch(col) {
    case 1: digitalWrite(C1, state); break;
    case 2: digitalWrite(C2, state); break;
    case 3: digitalWrite(C3, state); break;
    case 4: digitalWrite(C4, state); break;
    case 5: digitalWrite(C5, state); break;
    case 6: digitalWrite(C6, state); break;
    case 7: digitalWrite(C7, state); break;
    case 8: digitalWrite(C8, state); break;
  }
}

void loop() {
  for (int j = 0; j < 8; j++) {
    SelectRow(j+1);
    for (int i = 0; i < 8; i++) {
      Set_LED_in_Active_Row(i+1, Cat[j][i]);
    }
    delay(2 + pause);
  }
  if (pause > 100) pause -= 100;
  else if (pause > 0) pause -= 10;
}

3. 텍스트 스크롤 (멀티플렉싱)

// 8x8 LED 매트릭스에 텍스트 스크롤 표시

int position = 0;
int Marios_ideas[8][54] = {  // 8행 x 54열 비트맵 (생략 - 원본 참조)
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  {0,1,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0},
  // ... 나머지 6행 데이터
};

void loop() {
  for (int x = 0; x < 5; x++) {  // 프레임당 5회 반복으로 밝기 보정
    for (int j = 0; j < 8; j++) {
      SelectRow(j+1);
      for (int i = 0; i < 8; i++) {
        int colIdx = (i + position) % 54;
        Set_LED_in_Active_Row(i+1, Marios_ideas[j][colIdx]);
      }
      delay(2);
    }
  }
  position = (position + 1) % 54;
}

회로도

드라이버 칩 없이 아두이노 나노로 8x8 LED 매트릭스 직접 제어하기

행(캐소드): D2~D9 → 각 행 공통 캐소드
열(애노드): D10~D13, A0~A3 → 각 열 공통 애노드 (330Ω 저항 직렬 권장)

후원 및 참고

제조공정

  1. 발광 다이오드(LED): 탄생부터 100년 수명까지
  2. Maxim MAX25610A/B: 자동차 및 산업 조명용 초소형 고효율 EMI 최적화 LED 드라이버
  3. 아두이노 '관짝 댄스' 멜로디 프로젝트 – 바이럴 곡 직접 연주해보기
  4. 아두이노 나노와 MAX7219로 만드는 24x16 LED 퐁 게임 콘솔
  5. PIR 모션 센서 연동 인터랙티브 LED 매트릭스 도어 디스플레이 - 아두이노 홀리데이 인사
  6. 소리 감지 8-LED 라이트 디스플레이 - 아두이노 초보자 프로젝트
  7. 스마트 아두이노 4족 보행 로봇 제작: 단계별 완벽 가이드
  8. DIY 핫글루 LED 매트릭스 램프 - 나만의 컬러풀 디스플레이 만들기
  9. 볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
  10. 드라이버 칩 없이 아두이노 나노로 8x8 LED 매트릭스 직접 제어하기