본문 바로가기
💻 Microprocessor/캡스톤 챌린지

[6주차] (Led Matrix) Capston Challenge

by GroovyArea 2022. 10. 13.

문제 1

  • 마지막 행만을 On

 

문제 이해

  • 애노드 타입을 이용
  • row : high, col : low 일때 led on 되는 것을 명심하자

 

코드

int pin[17] = { -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 };

int col[8] = { pin[9], pin[10], pin[11], pin[12], pin[13], pin[14], pin[15], pin[16] };

int row[8] = { pin[1], pin[2], pin[3], pin[4], pin[5], pin[6], pin[7], pin[8] };


void setup() {
  // put your setup code here, to run once:
  for (int i = 1; i <= 16; i++) {
    pinMode(pin[i], OUTPUT);
  }
}

void loop() {
  // put your main code here, to runiuj8i repeatedly:
  // row : high, col : low 일때 led On!
  digitalWrite(row[7], HIGH);

  for (int i = 1; i < 8; i++) {
    digitalWrite(col[i], LOW);
  }
}

 

 

문제 2

  • 마지막 도트 부터 첫 도트까지 도트 별 이동하면서 on

 

문제 이해

  • 이중 반복문을 돌려 특정 dot 에서 on

 

코드

int pin[17] = { -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 };

int col[8] = { pin[9], pin[10], pin[11], pin[12], pin[13], pin[14], pin[15], pin[16] };

int row[8] = { pin[1], pin[2], pin[3], pin[4], pin[5], pin[6], pin[7], pin[8] };


void setup() {
  // put your setup code here, to run once:
  for (int i = 1; i <= 16; i++) {
    pinMode(pin[i], OUTPUT);
  }
}

void loop() {
  // put your main code here, to runiuj8i repeatedly:
  // row : high, col : low 일때 led On!
  for (int i = 7; i >= 0; i--) {
    for (int k = 7; k >= 0; k--) {
      dot_led(i, k);
      delay(500);
    }
  }
}

void dot_led(int row_led, int col_led) {
  for (int m = 0; m < 8; m++) {
    digitalWrite(row[m], LOW);
    digitalWrite(col[m], HIGH);
  }

  digitalWrite(row[row_led], HIGH);
  digitalWrite(col[col_led], LOW);
}

 

 

문제 3

  • 첫행 부터 마지막 행까지 누적 on하고, 다시 첫행으로 off 반복

 

문제 이해

  • 이중 반복문을 돌려서 on
  • 범위를 변경하여 off

 

코드

int pin[17] = { -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 };

int col[8] = { pin[9], pin[10], pin[11], pin[12], pin[13], pin[14], pin[15], pin[16] };

int row[8] = { pin[1], pin[2], pin[3], pin[4], pin[5], pin[6], pin[7], pin[8] };


void setup() {
  for (int i = 1; i <= 16; i++) {
    pinMode(pin[i], OUTPUT);
  }
}

void loop() {
  // row : high, col : low 일때 led On!

  // 초기화
  for (int m = 0; m < 8; m++) {
    digitalWrite(row[m], LOW);
    digitalWrite(col[m], HIGH);
  }

  for (int i = 0; i < 8; i++) {
    digitalWrite(row[i], HIGH);
    for (int j = 0; j < 8; j++) {
      digitalWrite(col[j], LOW);
    }
    delay(200);
  }

  for (int i = 7; i >= 0; i--) {
    digitalWrite(row[i], LOW);
    for (int j = 7; j >= 0; j--) {
      digitalWrite(col[j], LOW);
    }
    delay(200);
  }
}
반응형