J'ai:
- 2 matrices LED 8x8 , et
- une puce MAX7219.
Q: Je me demande simplement comment puis-je connecter cela à l' Arduino Duemilanove ?
J'ai fait des recherches sur Google, mais je n'ai pas pu savoir comment.
J'ai:
Q: Je me demande simplement comment puis-je connecter cela à l' Arduino Duemilanove ?
J'ai fait des recherches sur Google, mais je n'ai pas pu savoir comment.
Réponses:
Bryan Chung avait un tutoriel toujours disponible sur Internet Archive sur la façon de connecter une matrice LED à un Arduino en utilisant un MAX7219:
Voici une expérience avec une matrice LED 8 × 8, pilotée par un CI MAX7219, contrôlée par une carte micro-contrôleur Arduino. Un PCB personnalisé a été fabriqué par Tan de DinoTech pour ranger tous les fils reliant la matrice LED et le circuit intégré. Il est livré avec une alimentation 12V séparée, afin de ne pas tout vider de la carte Arduino.
Seuls 4 fils sont nécessaires pour contrôler le circuit intégré du pilote MAX7219. Ils sont les
Horloge de données Loquet / charge Masse
Les broches de données et d'horloge doivent correspondre à celles de la commande shiftOut () dans Arduino. La goupille de verrouillage donnera une impulsion LOW à HIGH après la commande shiftOut. J'ai écrit le programme original de Javelin Stamp. Comme Arduino ne peut décaler que 8 bits de données, je dois utiliser 2 commandes distinctes pour décaler les octets supérieur et inférieur vers le MAX7219, qui a besoin d'un contrôle de 2 octets pour chaque commande.
Pour la structure de données de la matrice LED 8 × 8, j'utilise un tableau d'octets - matrice de longueur 8. Chaque ligne de la matrice correspond à la dimension Y. Chaque bit consécutif correspond à la dimension X. Le chiffre 1 est activé; 0 est désactivé. La direction X est inversée et il y a aussi un décalage de 1 bit. La fonction updateLED () répond à cela.
Le premier programme est une animation d'un mouvement d'une seule ligne.
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];
}
}
Désolé si c'est un peu tard pour vous, mais je viens d'écrire un article sur l'utilisation du MAX7219 avec des matrices LED et des écrans LED 7 segments.