const int dataPin = 2; // DS
const int clockPin = 3; // SH_CP
const int latchPin = 4; // ST_CP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
// Gauche à droite
for (int i = 0; i < 8; i++) {
sendData(1 << i);
delay(150);
// Éteindre toutes les LEDs
sendData(0);
delay(10);
}
// Droite à gauche
for (int i = 6; i >= 0; i--) {
sendData(1 << i);
delay(150);
// Éteindre toutes les LEDs
sendData(0);
delay(10);
}
}
void sendData(byte data) {
// Latch en bas pour préparer l'envoi des données
digitalWrite(latchPin, LOW);
for (int i = 7; i >= 0; i--) {
// Extraction chaque bit en utilisant un masque
byte bitValue = (data >> i) & 1;
// Mettre la broche de données à la valeur du bit
digitalWrite(dataPin, bitValue);
// Impulsion d'horloge pour enregistrer le bit
digitalWrite(clockPin, HIGH);
delayMicroseconds(1);
digitalWrite(clockPin, LOW);
delayMicroseconds(1);
}
// Mettre le latch en haut pour transférer les données aux sorties
digitalWrite(latchPin, HIGH);
}