#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
#define pin_I0 16
#define pin_I1 17
#define pin_I2 18
#define pin_I3 19
#define pin_I4 20
#define pin_I5 21
#define pin_I6 15
#define pin_I7 14
#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 I6 digitalRead(pin_I6)
#define I7 digitalRead(pin_I7)
#define Q0 6
#define Q1 7
#define Q2 8
#define Q3 9
#define Q4 10
#define Q5 11
#define Q6 12
#define Q7 13
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.write(I4);
lcd.write(I5);
lcd.write(I6);
lcd.write(I7);
lcd.setCursor(0, 2);
lcd.print(" 01234567");
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));
lcd.write(digitalRead(Q6));
lcd.write(digitalRead(Q7));
}
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(pin_I6, INPUT);
pinMode(pin_I7, INPUT);
pinMode(Q0, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(Q2, OUTPUT);
pinMode(Q3, OUTPUT);
pinMode(Q4, OUTPUT);
pinMode(Q5, OUTPUT);
pinMode(Q6, OUTPUT);
pinMode(Q7, 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);
digitalWrite(Q4, I4);
digitalWrite(Q5, I5);
digitalWrite(Q6, I6);
digitalWrite(Q7, I7);
display_update();
}