/*
  Using 74hc595 to connect to led bar graph as fill meter
  Inspired by Uri Shaked's 74HC595 Arduino Shift Register example for Wokwi
  based on his layout and starter code
  John Clark
*/

const int dataPin = 2;   /* DS */
const int clockPin = 3;  /* SHCP */
const int latchPin = 4;  /* STCP */

const int pattern7_7 = 0b01111111;
const int pattern6_7 = 0b00111111;
const int pattern5_7 = 0b00011111;
const int pattern4_7 = 0b00001111;
const int pattern3_7 = 0b00000111;
const int pattern2_7 = 0b00000011;
const int pattern1_7 = 0b00000001;

void setup() {
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  Serial.begin(9600);
}

int pattern = 0b11111111;
void loop() {
  digitalWrite(latchPin, LOW);
  Serial.println("Level 1/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern1_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW); 
  Serial.println("Levek 2/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern2_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW); 
  Serial.println("Level 3/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern3_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);
    
  digitalWrite(latchPin, LOW); 
  Serial.println("Level 4/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern4_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW); 
  Serial.println("Level 5/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern5_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW); 
  Serial.println("Level 6/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern6_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW); 
  Serial.println("Level 7/7");
  shiftOut(dataPin, clockPin, LSBFIRST, pattern7_7);
  digitalWrite(latchPin, HIGH);
  delay(1000);

}
74HC595