배송 |
---|
상품 정보 | 가격 | 삭제 |
---|---|---|
아두이노 8x8 도트 매트릭스 LED | ||
TOTAL PRICE(수량) 0 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 |
#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 다 꺼주기
} |
cs |
2,200원