const int DATA_PIN = 9;
const int CLOCK_PIN = 10;
const int LATCH_PIN_MAIN = 2;
const int LATCH_PIN_SECONDARY = 4;
void setup() {
Serial.begin(9600);
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN_MAIN, OUTPUT);
pinMode(LATCH_PIN_SECONDARY, OUTPUT);
}
void loop() {
// Call the function to set the patterns repeatedly in the loop
activatelatchpins();
}
void activatelatchpins() {
byte firstbytepattern, secondbytepattern;
// Pattern 5
firstbytepattern = 0b00001000;
secondbytepattern = 0b10000001;
setPattern(firstbytepattern, secondbytepattern);
// Pattern 6
firstbytepattern = 0b00000100;
secondbytepattern = 0b11000011;
setPattern(firstbytepattern, secondbytepattern);
// Pattern 7
firstbytepattern = 0b00000010;
secondbytepattern = 0b11100111;
setPattern(firstbytepattern, secondbytepattern);
// Pattern 8
firstbytepattern = 0b00000001;
secondbytepattern = 0b11100111;
setPattern(firstbytepattern, secondbytepattern);
}
void setPattern(byte firstbytepattern, byte secondbytepattern) {
// Enable the main shift register to set the first byte pattern
digitalWrite(LATCH_PIN_MAIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, firstbytepattern);
digitalWrite(LATCH_PIN_MAIN, HIGH);
// Enable the secondary shift register to set the second byte pattern
digitalWrite(LATCH_PIN_SECONDARY, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, secondbytepattern);
digitalWrite(LATCH_PIN_SECONDARY, HIGH);
}
void clearDisplay() {
// Clear the display by setting all bits to LOW
setPattern(0b00000000, 0b00000000);
}