기본예제를 통해서 저희가 원하는 글자를 넣을 수 있게 된점 감사합니다.
0값을 주면 글씨가 꺼지는 코드를 하고싶은데 많은 도전을 통해 찾지 못하였습니다.
#include "LedControl.h"
LedControl lc=LedControl(13,12,11,4);
// DIN 핀을 12번에 CS 핀을 10번에 CLK핀을 11번에 연결해줌
// (DIN, CLK, CS, 연결할 도트 매트릭스의 개수)
int rec = 5; // rec를 5번 핀으로
int Rin = 4; // Rin을 4번 핀으로
int command; // 시리얼 모니터의 명령을 받아들이는 변수
#define E { \
{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, 1, 0}, \
{1, 0, 0, 0, 0, 1, 0, 0}, \
{1, 1, 1, 1, 1, 1, 0, 0}, \
{0, 0, 0, 0, 0, 1, 0, 0}, \
{0, 0, 0, 0, 0, 1, 0, 0} \
}
#define D { \
{1, 1, 1, 1, 1, 0, 1, 0},\
{0, 0, 1, 0, 0, 0, 1, 0},\
{0, 0, 1, 0, 0, 0, 1, 0},\
{0, 0, 1, 0, 0, 0, 1, 1},\
{0, 0, 1, 0, 0, 0, 1, 0},\
{0, 1, 0, 1, 0, 0, 1, 0},\
{1, 0, 0, 0, 1, 0, 1, 0},\
{0, 0, 0, 0, 0, 0, 1, 0},\
}
#define I { \
{0, 0, 1, 0, 0, 0, 0, 0},\
{0, 0, 1, 0, 0, 0, 0, 0},\
{0, 0, 1, 1, 1, 1, 1, 0},\
{0, 0, 0, 0, 0, 0, 0, 0},\
{0, 1, 1, 1, 1, 1, 1, 1},\
{0, 0, 0, 0, 0, 0, 0, 0},\
{0, 0, 1, 0, 0, 0, 0, 0},\
{0, 0, 1, 1, 1, 1, 1, 0},\
}
#define N { \
{0, 0, 1, 1, 1, 1, 1, 0},\
{0, 0, 0, 0, 1, 0, 0, 0},\
{0, 0, 0, 1, 0, 1, 0, 0},\
{0, 1, 1, 1, 1, 1, 1, 1},\
{0, 0, 0, 0, 1, 0, 0, 0},\
{0, 0, 0, 1, 1, 1, 0, 0},\
{0, 0, 1, 0, 0, 0, 1, 0},\
{0, 0, 0, 1, 1, 1, 0, 0},\
}
byte patterns[4][8][8] = { E, D, I, N };
// 위에서 정의한 led 모양을 patterns에 입력해 주기
void setup()
{
for(int i=0; i<4; i++){ // 도트 매트릭스 0~3번
lc.shutdown(i,false); // 디스플레이 초기화
lc.setIntensity(i,15); // 도트 매트릭스 밝기 (매트릭스 번호, 밝기) 1~15
lc.clearDisplay(i); // led 를 전체 꺼주는 함수
}
{
Serial.begin(9600); // 시리얼 통신, 속도는 9600
pinMode (rec, INPUT); // rec를 입력으로
pinMode (Rin,OUTPUT); // Rin을 출력으로
Serial.println("*********command*********"); // 1. 녹음 10초 2. 재생
Serial.println("9. record 5sec");
Serial.println("1. play ");
}
}
void clean(){ // 전체led를 꺼주는 함수
for(int i = 0; i = 0; i++)
lc.clearDisplay(i);// clear screen
}
void loop(){
int pattern = 4;
int row, col, i;
for(i = 0; i < 4; i++){ // 총 4글자 반복
for (row = 0; row < 8; row++) { // row 출력
for (col=0; col < 8; col++){ // col 출력
if (patterns[i][7 - col][7 - row] == 1)
// 위의 배열에서 1일때 해당되는 위치 불빛 켜주기
lc.setLed(i, col, row, true);
else // 위 배열에서 0일때 해당되는 위치 불빛 꺼주기
lc.setLed(i, col, row, false);
}
}
delay(200); // 딜레이 500ms
}
clean(); // led 전체 꺼주기
delay(0); // 딜레기 500ms
while(Serial.available())
{ // 시리얼 통신이 연결되어 있을시
command = Serial.read(); // 시리얼 통신으로 한 명령 읽기
switch(command)
{
case '1': // 2 입력 시 녹음된 소리 재생
Serial.println("play the record!!");
digitalWrite(Rin,HIGH); // 재생 중.
delay(10);
digitalWrite(Rin,LOW); // 녹음된 소리 재생이 끝나면 low로
break;
}
}
}