#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
#define pin_I0 2
#define pin_I1 3
#define pin_I2 4
#define pin_I3 5
#define pin_I4 6
#define pin_I5 7
#define I0 digitalRead(pin_I0)
#define I1 digitalRead(pin_I1)
#define I2 digitalRead(pin_I2)
#define I3 digitalRead(pin_I3)
#define I4 digitalRead(pin_I4)
#define I5 digitalRead(pin_I5)
#define Q0 13
#define Q1 12
#define Q2 11
#define Q3 10
#define Q4 9
#define Q5 8
char texto[] = "digital I/O";
byte pin_state_high[] = {0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x00};
byte pin_state_low[] = {0x00,0x1F,0x11,0x11,0x11,0x11,0x1F,0x00};
void display_update() {
lcd.setCursor(0, 0);
lcd.print(texto);
lcd.setCursor(0, 1);
lcd.print("I: ");
lcd.write(I0);
lcd.write(I1);
lcd.write(I2);
lcd.write(I3);
lcd.write(I4);
lcd.write(I5);
lcd.setCursor(0, 2);
lcd.print(" 012345");
lcd.setCursor(0, 3);
lcd.print("Q: ");
lcd.write(digitalRead(Q0));
lcd.write(digitalRead(Q1));
lcd.write(digitalRead(Q2));
lcd.write(digitalRead(Q3));
lcd.write(digitalRead(Q4));
lcd.write(digitalRead(Q5));
}
void setup() {
// put your setup code here, to run once:
pinMode(pin_I0, INPUT);
pinMode(pin_I1, INPUT);
pinMode(pin_I2, INPUT);
pinMode(pin_I3, INPUT);
pinMode(pin_I4, INPUT);
pinMode(pin_I5, INPUT);
pinMode(Q0, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(Q2, OUTPUT);
pinMode(Q3, OUTPUT);
pinMode(Q4, OUTPUT);
pinMode(Q5, OUTPUT);
lcd.begin(20, 4); // initialize the lcd
lcd.createChar(0, pin_state_low);
lcd.createChar(1, pin_state_high);
delay(200);
lcd.setBacklight(255);
}
void loop() {
// put your main code here, to run repeatedly:
if (I0 && !I1)
digitalWrite(Q0, HIGH);
if (I1)
digitalWrite(Q0, LOW);
display_update();
}