/*
74HC595 Arduino Shift Register example for Wokwi
Copyright (C) 2021, Uri Shaked
License: MIT.
*/
const int dataPin = 8; /* DS */
const int clockPin = 9; /* SHCP */
const int latchPin = 10; /* STCP */
const int SW0 = 0;
const int SW1 = 1;
const int SW2 = 2;
const int SW3 = 3;
const int SW4 = 4;
const int SW5 = 5;
const int SW6 = 6;
const int SW7 = 7;
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(SW0, INPUT_PULLUP);
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
pinMode(SW4, INPUT_PULLUP);
pinMode(SW5, INPUT_PULLUP);
pinMode(SW6, INPUT_PULLUP);
pinMode(SW7, INPUT_PULLUP);
}
void loop() {
uint8_t bits = 0;
bitWrite(bits, 0, digitalRead(SW0));
bitWrite(bits, 1, digitalRead(SW1));
bitWrite(bits, 2, digitalRead(SW2));
bitWrite(bits, 3, digitalRead(SW3));
bitWrite(bits, 4, digitalRead(SW4));
bitWrite(bits, 5, digitalRead(SW5));
bitWrite(bits, 6, digitalRead(SW6));
bitWrite(bits, 7, digitalRead(SW7));
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, bits);
digitalWrite(latchPin, HIGH);
}