#include "Wire.h"
#define ADDR 0x20
uint8_t writeBits = 0x00;
uint8_t readBits = 0x00;
uint8_t writeByte = 0x00;
void pinInput(uint8_t pin){
writeBits = writeBits | bit(pin);
readBits = readBits & ~bit(pin);
};
void pinWrite(uint8_t pin, uint8_t state) {
Wire.beginTransmission(ADDR);
if (state==HIGH){
writeByte = writeByte | bit(pin);
}else{
writeByte = writeByte & ~bit(pin);
}
writeByte = writeByte & writeBits;
Wire.write(writeByte);
Wire.endTransmission();
}
void init_pcf8574() {
Wire.begin(21, 22);
Wire.beginTransmission(ADDR);
uint8_t registers = writeBits | readBits;
Wire.write(~registers);
Serial.println("writed");
Serial.println(registers);
Wire.endTransmission();
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
for (int i = 0; i < 8; i++) {
pinInput(i);
}
init_pcf8574();
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0; i < 8; i++) {
delay(40);
pinWrite(i, 1);
pinWrite(i, 0);
delay(40);
}
}