Bonsoir,
je suis nouveau sur ce forum et très désireux d'appendre l'arduino pour faire des projets comme : robot mobile, objet connectés, ... . J'utilise une arduino UNO
Pour commencer, j'arrive à jouer avec des LED et des boutons.
J'ai pour projet de créer une matrice de 30 leds pour y afficher des smileys (d'où l'utilisation d'un tableau dans mon code pour pouvoir gérer quelle led afficher ou non, ... .
J'ai vu que pour jouer avec plus de 13 pins il fallait utiliser des shift register 74hc595.
==> mon premier montage avec 1 seul shift register qui gère 8 led fonctionne
// on défini les pins
#define SHIFT 5
#define LATCH 6
#define DATA 7
// Table led à allumer
const byte chars[8] = {
B10000001,
B00000010,
B01000100,
B00001000,
B00010000,
B00100000,
B01000010,
B10000000};
int time_delay = 500; // Delay
void setup()
{
// On déclare les pins vers le 74HC595 en sortie
pinMode(SHIFT, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
}
void loop()
{
int i;
// On boucle sur le tableau char
for (i = 0; i < 8; i++) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, SHIFT, MSBFIRST, chars[i]);
digitalWrite(LATCH, HIGH);
delay(time_delay);
}
}
==> par contre quand je veux passer à 16 leds, avec 2 shift register donc, cela ne fonctionne pas. Faut-il déclarer le nombre de shift register utilisé ?
// on défini les pins
#define SHIFT 5
#define LATCH 6
#define DATA 7
// Table led à allumer
const byte chars[16] = {
B1000000100000000,
B0000001000000000,
B0100010000000100,
B0000100000000000,
B0001000000000000,
B0010000000000000,
B0100001000000000,
B1000000000000000,
B1000000100000000,
B0000001000000000,
B0100010000000000,
B0000100000000010,
B0001000000000000,
B0010000000000000,
B0100001000001000,
B1000000000000000}
int time_delay = 500; // Delay
void setup()
{
// On déclare les pins vers le 74HC595 en sortie
pinMode(SHIFT, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
}
void loop()
{
int i;
// On boucle sur le tableau char
for (i = 0; i < 16; i++) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, SHIFT, MSBFIRST, chars[i]);
digitalWrite(LATCH, HIGH);
delay(time_delay);
}
}
Merci pour votre aide.
J