#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);
}