8-4 하트 모양

공부하는 학생 A·2024년 2월 18일

아두이노 

목록 보기
41/74
post-thumbnail

도트 매트릭스에 하트 모양을 표시해보자
해당 도트 매트릭스를 하려면 라이브러리에서 FrequencyTimer2를 다운로드 받아야 한다.

스케치 8-7 도트 매트릭스를 이용하여 하트 모양 출력하기

#include <FrequencyTimer2.h>
// 하트모양
byte col = 0;
byte leds[8][8];
// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17]= {-1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9,8, 7, 6};
  // row[xx] of leds = pin yy on led matrix
int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1],pins[7], pins[2], pins[5]};
 
// col[xx] of leds = pin yy on led matrix
int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[06],pins[11], pins[15], pins[16]};
int pattern = 0;
void setup() {
  // put your setup code here, to run once:
  for (int i = 1; i <= 16; i++) {
    pinMode(pins[i], OUTPUT);
  }
  for (int i = 1; i <= 8; i++) {
    digitalWrite(cols[i - 1], HIGH);
  }
  // set up cols and rows
  for (int i = 1; i <= 8; i++) {
    digitalWrite(rows[i - 1], LOW);
  }
}
void loop() {
  digitalWrite(rows[0], HIGH);  // 0행 LED ON
  digitalWrite(cols[1], LOW);  
  digitalWrite(cols[6], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[1], HIGH);  // 1행 LED ON
  digitalWrite(cols[0], LOW);  
  digitalWrite(cols[2], LOW); 
  digitalWrite(cols[5], LOW);  
  digitalWrite(cols[7], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[2], HIGH);  // 2행 LED ON
  digitalWrite(cols[0], LOW);  
  digitalWrite(cols[3], LOW);  
  digitalWrite(cols[4], LOW);  
  digitalWrite(cols[7], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[3], HIGH);  // 3행 LED ON
  digitalWrite(cols[0], LOW);  
  digitalWrite(cols[7], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[4], HIGH);  // 4행 LED ON
  digitalWrite(cols[0], LOW);  
  digitalWrite(cols[7], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[5], HIGH);  // 5행 LED ON
  digitalWrite(cols[1], LOW);  
  digitalWrite(cols[6], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[6], HIGH);  // 6행 LED ON
  digitalWrite(cols[2], LOW);  
  digitalWrite(cols[5], LOW);  
  delay(2);
  reset();
  digitalWrite(rows[7], HIGH);  // 7행 LED ON
  digitalWrite(cols[3], LOW);  
  digitalWrite(cols[4], LOW);  
  delay(2);
  reset();
}
void reset() {
  for(int i = 0; i < 8 ; i++){
    digitalWrite(rows[i],LOW);
    digitalWrite(cols[i],HIGH);
  }
}

스케치 8-7 분석

reset 함수는 LED를 초기화해주는 함수이다.

스케치 8-7 실행결과

profile
Shine like a star, Just like a star

0개의 댓글