#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
#define pin_I0 4
#define pin_I1 5
#define pin_I2 6
#define pin_I3 7
#define I0 digitalRead(pin_I0)
#define I1 digitalRead(pin_I1)
#define I2 digitalRead(pin_I2)
#define I3 digitalRead(pin_I3)
#define Q0 19
#define Q1 18
#define Q2 10
#define Q3 3
char texto[] = "digital I/O";
byte pin_state_high[] = {
0b00000,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b00000
};
byte pin_state_low[] = {
0b00000,
0b11111,
0b10001,
0b10001,
0b10001,
0b10001,
0b11111,
0b00000
};
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.setCursor(0, 2);
lcd.print(" 0123");
lcd.setCursor(0, 3);
lcd.print("Q: ");
lcd.write(digitalRead(Q0));
lcd.write(digitalRead(Q1));
lcd.write(digitalRead(Q2));
lcd.write(digitalRead(Q3));
}
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(Q0, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(Q2, OUTPUT);
pinMode(Q3, 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:
digitalWrite(Q0, I0);
digitalWrite(Q1, I1);
digitalWrite(Q2, I2);
digitalWrite(Q3, I3);
display_update();
}