문제 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);
}
}
반응형
'💻 Microprocessor > 캡스톤 챌린지' 카테고리의 다른 글
[5주차] (Timer Counter Interrupt) Capston Challenge (0) | 2022.10.09 |
---|---|
[2주차] (External Interrupt) Caston Challenge 4 (2) | 2022.10.05 |
[2주차] Capston challenge 1 (0) | 2022.09.12 |