나는 가지고있다:
- 2 8x8 LED 매트릭스 및
- MAX7219 칩.
Q : Arduino Duemilanove에 어떻게 연결할 수 있습니까?
인터넷 검색을 해왔지만 방법을 찾지 못했습니다.
나는 가지고있다:
Q : Arduino Duemilanove에 어떻게 연결할 수 있습니까?
인터넷 검색을 해왔지만 방법을 찾지 못했습니다.
답변:
Bryan Chung은 MAX7219를 사용하여 LED 매트릭스를 Arduino에 연결하는 방법 에 대한 자습서를 여전히 인터넷 아카이브 에서 사용할 수있었습니다 .
다음은 Arduino 마이크로 컨트롤러 보드를 통해 제어되는 MAX7219 IC로 구동되는 8x8 LED 매트릭스를 사용한 실험입니다. Tan은 DinoTech의 맞춤형 PCB를 만들어 LED 매트릭스와 IC를 연결하는 모든 와이어를 정리했습니다. Arduino 보드에서 모든 것을 배출하지 않기 위해 별도의 12V 전원 공급 장치가 제공됩니다.
MAX7219 드라이버 IC를 제어하려면 4 개의 와이어 만 필요합니다. 그들은
데이터 클록 래치 /로드 접지
데이터 및 클럭 핀은 Arduino의 shiftOut () 명령과 일치해야합니다. shiftOut 명령 후 래치 핀은 LOW에서 HIGH로 펄스를줍니다. 나는 Javelin Stamp의 원래 프로그램을 작성했습니다. Arduino는 8 비트의 데이터 만 이동할 수 있기 때문에 상위 및 하위 바이트를 MAX7219로 전환하려면 2 개의 개별 명령을 사용해야합니다. 각 명령마다 2 바이트 제어가 필요합니다.
8 × 8 LED 매트릭스의 데이터 구조에는 바이트 배열 – 길이 8의 매트릭스를 사용합니다. 매트릭스의 각 행은 Y 차원에 해당합니다. 행의 각 비트는 X 치수에 해당합니다. 숫자 1이 켜져 있습니다. 0이 꺼져 있습니다. X 방향이 반전되고 1 비트 시프트도 있습니다. updateLED () 함수가이를 충족시킵니다.
첫 번째 프로그램은 단일 라인 모션의 애니메이션입니다.
int CLOCK = 12;
int LATCH = 13;
int DATA = 11;
byte matrix[8];
int idx = 0;
void setup() {
pinMode(CLOCK, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
digitalWrite(CLOCK, LOW);
digitalWrite(LATCH, LOW);
digitalWrite(DATA, LOW);
initLED();
clearLED();
}
void loop() {
for (int j=0;j<8;j++) {
updateLED(idx, j, true);
}
refreshLED();
delay(200);
for (int j=0;j<8;j++) {
updateLED(idx, j, false);
}
refreshLED();
delay(100);
idx++;
idx %= 8;
}
void ledOut(int n) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, (n>>8));
shiftOut(DATA, CLOCK, MSBFIRST, (n));
digitalWrite(LATCH, HIGH);
delay(1);
digitalWrite(LATCH, LOW);
}
void initLED() {
ledOut(0x0B07);
ledOut(0x0A0C);
ledOut(0x0900);
ledOut(0x0C01);
}
void clearLED() {
for (int i=0;i<8;i++) {
matrix[i] = 0x00;
}
refreshLED();
}
void refreshLED() {
int n1, n2, n3;
for (int i=0;i<8;i++) {
n1 = i+1;
n2 = matrix[i];
n3 = (n1<<8)+n2;
ledOut(n3);
}
}
void updateLED(int i, int j, boolean b) {
int t = 1;
int n = 0;
int m = 0;
if (j==0) {
m = 7;
}
else {
m = j-1;
}
n = t<<m;
if (b) {
matrix[i] = n | matrix[i];
}
else {
n = ~n;
matrix[i] = n & matrix[i];
}
}
조금 늦었다면 죄송하지만 LED 매트릭스 및 7 세그먼트 LED 디스플레이와 함께 MAX7219 를 사용하는 것에 대한 게시물을 작성했습니다 .