#include <Arduino.h>
#define DATA_PIN 22 // Data Pin (DS)
#define CLOCK_PIN 23 // Clock Pin (SHCP)
#define LATCH_PIN 21 // Latch Pin (STCP)
void setup() {
// Initialize the shift register pins as OUTPUT
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
// Set all LEDs initially on
setAllLeds();
delay(1000); // Delay for 1 second to display the initial state
}
void loop() {
// Display a light pattern from left to right
for (int i = 0; i < 8; i++) {
setLed(i, HIGH); // Turn on LED i
delay(2000); // Delay for 200 milliseconds
setLed(i, LOW); // Turn off LED i
}
// Reset the pattern by turning off all LEDs
setAllLeds();
delay(1000); // Delay for 1 second before repeating the pattern
}
void setLed(int index, int state) {
digitalWrite(LATCH_PIN, LOW);
byte dataToSend = 0;
// Set the state of the LED at the specified index
bitWrite(dataToSend, index, state);
// Send the data to the shift register
for (int i = 7; i >= 0; i--) {
digitalWrite(DATA_PIN, bitRead(dataToSend, i));
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
digitalWrite(LATCH_PIN, HIGH);
}
void setAllLeds() {
digitalWrite(LATCH_PIN, LOW);
byte dataToSend = 0xFF; // Set all LEDs to HIGH
// Send the data to the shift register
for (int i = 7; i >= 0; i--) {
digitalWrite(DATA_PIN, bitRead(dataToSend, i));
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
digitalWrite(LATCH_PIN, HIGH);
}