#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int lastButtonState = LOW;
int currentButtonState;
int value = -1;
int PIDPins[] = {13,12,14,27,26,25,33,32,15};//{15,32,33,25,26,27,14,12,13};
int PIDVals[8];
int number = 0 ;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
pinMode(13, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);
pinMode(27, INPUT_PULLUP);
pinMode(26, INPUT_PULLUP);
pinMode(25, INPUT_PULLUP);
pinMode(33, INPUT_PULLUP);
pinMode(32, INPUT_PULLUP);
pinMode(15, INPUT_PULLDOWN);
Wire.begin();
}
void loop() {
currentButtonState = digitalRead(15);
if (currentButtonState == HIGH && lastButtonState == LOW) {
for (int i=0; i<8;i++){
PIDVals[i]=digitalRead(PIDPins[i]);
}
updateLCD();
lcd.setCursor(1, 0);
int binNumber = number;
String myString = String(binNumber,BIN);
switch (myString.length()) {
case 1:
lcd.print("0000000");
lcd.print(myString);
break;
case 2:
lcd.print("000000");
lcd.print(myString);
break;
case 3:
lcd.print("00000");
lcd.print(myString);
break;
case 4:
lcd.print("0000");
lcd.print(myString);
break;
case 5:
lcd.print("000");
lcd.print(myString);
break;
case 6:
lcd.print("00");
lcd.print(myString);
break;
case 7:
lcd.print("0");
lcd.print(myString);
break;
default:
lcd.print(myString);
break;
}
lcd.print("=0x");
lcd.print(binNumber,HEX);
}
number =0 ;
lastButtonState = currentButtonState;
}
void updateLCD() {
for (int i=0; i<8;i++){
// lcd.setCursor(i,0);
// lcd.print(PIDVals[i]);
number = number + (PIDVals[i]*pow(2,i));
}
Serial.println(number);
}