// Pin setup pour le 1er 74HC595
const int dataPin = 2; // DS (Data)
const int clockPin = 3; // SH_CP (Shift Clock)
const int latchPin = 4; // ST_CP (Storage Clock)
// Pin setup pour le 2eme 74HC595
const int dataPin2 = 5; // DS (Data)
const int clockPin2 = 6; // SH_CP (Shift Clock)
const int latchPin2 = 7; // ST_CP (Storage Clock)
// Variable pour contrôler quelle LED allumer
int ledIndex = 0;
byte values[] = {0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b10000000};
byte values1[] = {0b11111110, 0b11111101, 0b11111011, 0b11110111, 0b11101111, 0b11011111, 0b10111111, 0b01111111};
void setup() {
// Set shift register pins as outputs
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin2, OUTPUT);
pinMode(latchPin2, OUTPUT);
pinMode(clockPin2, OUTPUT);
}
void loop() {
// Get the current number of seconds
int currentSeconds = millis() / 1000;
currentSeconds = currentSeconds % 60; // Reset to 0 after 60 seconds
// Première partie (8 LEDs) du premier registre 74HC595
byte firstRegisterData = 0;
if (ledIndex < 8) {
firstRegisterData = 1 << ledIndex; // Déplacer un bit pour allumer une LED spécifique
}
// Deuxième partie (8 LEDs) du deuxième registre 74HC595
byte secondRegisterData = 0;
if (ledIndex >= 8 && ledIndex < 16) {
secondRegisterData = 1 << (ledIndex - 8); // Déplacer un bit pour allumer une LED spécifique
}
// Mettre les pins de latch en LOW avant d'envoyer les données
digitalWrite(latchPin,LOW );
digitalWrite(latchPin2, LOW);
// Envoyer les données vers les deux registres de décalage
shiftOut(dataPin, clockPin, MSBFIRST, values1[currentSeconds % 8]); // Envoyer vers le premier registre
shiftOut(dataPin2, clockPin2, MSBFIRST, values[currentSeconds/8]); // Envoyer vers le deuxième registre
// Mettre les pins de latch en HIGH pour activer les LEDs
digitalWrite(latchPin,HIGH );
digitalWrite(latchPin2, HIGH);
// Attendre un moment avant de passer à la LED suivante
//delay(100);
// Passer à la LED suivante
ledIndex++;
if (ledIndex >= 64) {
ledIndex = 0; // Réinitialiser à la première LED après la 64e
}
}