#include <LiquidCrystal_I2C.h>

const int PIN_VALUE = A0;
const int PIN_INH = 7;
const int PIN_A = 4;
const int PIN_B = 5;
const int PIN_C = 6;

const int SW_INH = 8;
const int SW_A = 9;
const int SW_B = 10;
const int SW_C = 11;

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(115200);
  Serial.println("Starting Demo");

  pinMode(PIN_VALUE, INPUT);
  pinMode(PIN_INH, OUTPUT);
  pinMode(PIN_A, OUTPUT);
  pinMode(PIN_B, OUTPUT);
  pinMode(PIN_C, OUTPUT);
  pinMode(SW_INH, INPUT);
  pinMode(SW_A, INPUT);
  pinMode(SW_B, INPUT);
  pinMode(SW_C, INPUT);

  setRegisters(
    digitalRead(SW_INH), 
    digitalRead(SW_A), 
    digitalRead(SW_B), 
    digitalRead(SW_C)
  );

  lcd.init();
  lcd.backlight();
  lcd.begin(16,2);
}

void loop() {
  uint8_t inh = digitalRead(SW_INH);
  uint8_t a = digitalRead(SW_A);
  uint8_t b = digitalRead(SW_B);
  uint8_t c = digitalRead(SW_C);

  setRegisters(inh, a, b, c);

  lcd.setCursor(0,0);
  lcd.print("Value: ");
  lcd.print(analogRead(PIN_VALUE));

  byte result = 0b00000000;
  bitWrite(result, 3, inh);
  bitWrite(result, 2, a);
  bitWrite(result, 1, b);
  bitWrite(result, 0, c);

  lcd.setCursor(0,1);
  lcd.print("Set: ");
  lcd.print(result);

  delay(5);
}

void setRegisters(uint8_t inh, uint8_t a, uint8_t b, uint8_t c) {
  digitalWrite(PIN_INH, inh);
  digitalWrite(PIN_A, a);
  digitalWrite(PIN_B, b);
  digitalWrite(PIN_C, c);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
CD4051BBreakout
ic1:CIO4
ic1:CIO6
ic1:COMIO
ic1:CIO7
ic1:CIO5
ic1:INH
ic1:VEE
ic1:VSS
ic1:C
ic1:B
ic1:A
ic1:CIO3
ic1:CIO0
ic1:CIO1
ic1:CIO2
ic1:VDD
pot1:GND
pot1:SIG
pot1:VCC
pot2:GND
pot2:SIG
pot2:VCC
pot3:GND
pot3:SIG
pot3:VCC
pot4:GND
pot4:SIG
pot4:VCC
pot5:GND
pot5:SIG
pot5:VCC
pot6:GND
pot6:SIG
pot6:VCC
pot7:GND
pot7:SIG
pot7:VCC
pot8:GND
pot8:SIG
pot8:VCC
sw1:1a
sw1:2a
sw1:3a
sw1:4a
sw1:5a
sw1:6a
sw1:7a
sw1:8a
sw1:8b
sw1:7b
sw1:6b
sw1:5b
sw1:4b
sw1:3b
sw1:2b
sw1:1b
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2