카카오톡 실시간 1:1상담 바로가기
닫기
[당일배송] 아두이노 8x8 도트 매트릭스 LED(상품고유번호 : 90880)
8x8 도트 매트릭스
1,500원
DS멤버쉽포인트 15원(교사회원30원)
배송비 3,000원(50,000원 이상 무료배송)
카카오톡 카카오스토리 페이스북 트위터 밴드

#include <FrequencyTimer2.h>
 
#define E  { \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}  \
}
 
#define D { \
    {1, 1, 1, 1, 1, 0, 0, 0},\
    {1, 1, 0, 0, 1, 1, 0, 0},\
    {1, 1, 0, 0, 0, 1, 1, 0},\
    {1, 1, 0, 0, 0, 1, 1, 0},\
    {1, 1, 0, 0, 0, 1, 1, 0},\
    {1, 1, 0, 0, 0, 1, 1, 0},\
    {1, 1, 0, 0, 1, 1, 0, 0},\
    {1, 1, 1, 1, 1, 0, 0, 0},\
}
 
#define U { \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 0, 1, 1, 1, 1, 0, 0}  \
}
 
#define I { \
    {0, 0, 1, 1, 1, 1, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
    {0, 0, 1, 1, 1, 1, 0, 0},\
}
 
#define N { \
    {0, 1, 0, 0, 0, 0, 1, 0},\
    {0, 1, 1, 0, 0, 0, 1, 0},\
    {0, 1, 0, 1, 0, 0, 1, 0},\
    {0, 1, 0, 1, 0, 0, 1, 0},\
    {0, 1, 0, 0, 1, 0, 1, 0},\
    {0, 1, 0, 0, 1, 0, 1, 0},\
    {0, 1, 0, 0, 0, 1, 1, 0},\
    {0, 1, 0, 0, 0, 0, 1, 0},\
}
 
#define O { \
    {0, 0, 0, 1, 1, 0, 0, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 0, 0, 1, 1, 0, 0, 0}  \
}
 
#define HEART { \
    {0, 0, 1, 0, 0, 1, 0, 0},\
    {0, 1, 0, 1, 1, 0, 1, 0},\
    {1, 0, 0, 0, 0, 0, 0, 1},\
    {1, 0, 0, 0, 0, 0, 0, 1},\
    {1, 0, 0, 0, 0, 0, 0, 1},\
    {0, 1, 0, 0, 0, 0, 1, 0},\
    {0, 0, 1, 0, 0, 1, 0, 0},\
    {0, 0, 0, 1, 1, 0, 0, 0},\
}
 
int tact = A5;      // 택트 스위치 a%에 연결
byte col = 0;       // COL을 0으로 초기화
byte leds[8][8];    // 현재 출력해야 할 LED 모양 업로드하는 배열
 
// 맨 처음 PINS[0]은 사용하지 않기때문에 -1로 설정. 1~16번까지의 핀을 PIN에 연결
int pins[17]= {-1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6};
 
// 행 0~7번까지 핀 연결해 주기
int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[6], pins[11], pins[15], pins[16]};
 
// 열 0~ 7번까지 핀 연결해 주기
int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5]};
 
const int numPatterns = 7;      // 총 사용할 패턴 수
byte patterns[numPatterns][8][8] = { E, D, U, I, N, O, HEART };   // 위에서 정의한 led 모양을 patterns에 입력해 주기
 
int pattern = 0;          
 
void setup() {
  // 1~16번 까지의 핀을 출력으로 설정
  for (int i = 1; i <= 16; i++) {
    pinMode(pins[i], OUTPUT);
  }
 
  // 행 0~7번까지를 high로
  for (int i = 0; i < 8; i++) {
    digitalWrite(cols[i], HIGH );
  }
  // 열 0~7번 까지를 low로
  for (int i = 0; i < 8; i++) {
    digitalWrite(rows[i], HIGH);
  }
 
  clearLeds();   // led 초기화
 
  FrequencyTimer2::setOnOverflow(display);  // leds를 보여주기 위해서 setOnOverFlow를 사용
 
  pinMode(tact, INPUT); // SW 를 설정, 아두이노 풀업저항 사용
 
  setPattern(pattern);      
}
 
void loop() {
    int readTact = digitalRead(tact);
 
    if(readTact == HIGH){     // 택트 스위치가 high일때
      if(pattern == 6) pattern = 0;   //패턴의 끝(heart)까지 다 출력하고 다시 처음 E 출력
      else pattern++;                // 다음 패턴 출력을 위해 pattern ++
     // delay(300);                 // 길게 눌러 패턴이 순식간에 넘거가지 않기 위해서 딜레이를 줌
    }   
       setPattern(pattern);           // 패턴 출력
}
 
void clearLeds() {  // led 다 초기화
  for (int i = 0; i < 8; i++)
    for (int j = 0; j < 8; j++)
      leds[i][j] = 0;  
}
 
void setPattern(int pattern) {        // LED 배열에 PATTREN 입력하기
  for (int i = 0; i < 8; i++)
    for (int j = 0; j < 8; j++)
      leds[i][j] = patterns[pattern][i][j];  
}
 
// Interrupt routine
void display() {
  digitalWrite(cols[col], HIGH);  // 이전 행들 다 꺼지게끔 해주기.
  col++;
  if (col == 8) {
    col = 0;
  }
  for (int row = 0; row <= 7; row++) {
    if (leds[col][7 - row] == 1) {        // 위의 배열에서 1일때 해당되는 위치 불빛 켜주기
      digitalWrite(rows[row], HIGH);
    }
    else {                          // 위 배열에서 0일때 해당되는 위치 불빛 꺼주기
      digitalWrite(rows[row], LOW);
    }
  }
  digitalWrite(cols[col], LOW);     // 다음 패턴을 위해 led 다 꺼주기
}

옵션닫기
[당일배송] 아두이노 8x8 도트 매트릭스 LED
- +
총금액 : 1,500
위로