constexpr uint8_t S0 = 4;
constexpr uint8_t S1 = 5;
constexpr uint8_t CP = 6;
constexpr uint8_t Q0 = 7;
constexpr uint8_t Q7 = 8;
constexpr uint8_t DS0 = 9;
constexpr uint8_t DS7 = 10;
constexpr uint8_t OE1 = 12;
constexpr uint8_t OE2 = 11;
void setup() {
Serial.begin(9600);
pinMode(Q0, INPUT);
pinMode(Q7, INPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(CP, OUTPUT);
pinMode(OE1, OUTPUT);
pinMode(OE2, OUTPUT);
pinMode(DS0, OUTPUT);
pinMode(DS7, OUTPUT);
}
void parallelLoad() {
digitalWrite(OE1, HIGH);
digitalWrite(OE2, HIGH);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(CP, HIGH);
digitalWrite(CP, LOW);
}
void leftShift() {
digitalWrite(OE1, HIGH);
digitalWrite(OE2, HIGH);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
Serial.print("Left shift parallel: ");
Serial.println(shiftIn(Q0, CP, LSBFIRST));
digitalWrite(OE1, LOW);
digitalWrite(OE2, LOW);
Serial.println("Blink sequence...");
for (int i = 0; i < 3; ++i) {
shiftOut(DS7, CP, LSBFIRST, 255);
Serial.print("Left shift serial: ");
Serial.println(shiftIn(Q0, CP, LSBFIRST));
delay(500);
shiftOut(DS7, CP, LSBFIRST, 0);
Serial.print("Left shift serial: ");
Serial.println(shiftIn(Q0, CP, LSBFIRST));
}
Serial.println("Done.");
}
void rightShift() {
digitalWrite(OE1, HIGH);
digitalWrite(OE2, HIGH);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
Serial.print("Right shift parallel: ");
Serial.println(shiftIn(Q7, CP, MSBFIRST));
digitalWrite(OE1, LOW);
digitalWrite(OE2, LOW);
Serial.println("Blink sequence...");
for (int i = 0; i < 3; ++i) {
shiftOut(DS0, CP, MSBFIRST, 255);
Serial.print("Right shift serial: ");
Serial.println(shiftIn(Q7, CP, MSBFIRST));
delay(500);
shiftOut(DS0, CP, MSBFIRST, 0);
Serial.print("Right shift serial: ");
Serial.println(shiftIn(Q7, CP, MSBFIRST));
delay(500);
}
Serial.println("Done.");
}
void loop() {
parallelLoad();
delay(3000);
leftShift();
delay(3000);
parallelLoad();
delay(3000);
rightShift();
delay(3000);
}