int dataPin = 11;
int clockPin = 12;
int latchPin = 8;
byte segments[8] = {
0b00000001, // A
0b00000010, // B
0b00000100, // C
0b00001000, // D
0b00010000, // E
0b00100000, // F
0b01000000, // G
0b10000000 // DP
};
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
digitalWrite(latchPin, LOW);
for (int b = 7; b >= 4; b--) {
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, (segments[i] >> b) & 1);
digitalWrite(clockPin, HIGH);
}
for (int b = 3; b >= 0; b--) {
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, (segments[i] >> b) & 1);
digitalWrite(clockPin, HIGH);
}
digitalWrite(latchPin, HIGH);
delay(300);
}
delay(1000);
for (int i = 7; i >= 0; i--) {
digitalWrite(latchPin, LOW);
for (int b = 7; b >= 4; b--) {
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, (segments[i] >> b) & 1);
digitalWrite(clockPin, HIGH);
}
for (int b = 3; b >= 0; b--) {
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, (segments[i] >> b) & 1);
digitalWrite(clockPin, HIGH);
}
digitalWrite(latchPin, HIGH);
delay(300);
}
delay(1000);
}