#include <Wire.h>
#define expander 0x20
void setup() {
Wire.begin();
Serial.begin(9600);
expanderWrite(B11111111);
pinMode(13, OUTPUT);
}
void loop() {
byte pin_number = 0; //check status of pin 0
/* querying the pcf8574 returns a byte. each bit is the current status of each of
the 8 pins. 0 = low, 1 = high */
byte returnByte = expanderRead();
// we can use a funciton called bitread to get the status of any bit in the byte
// pin number starts at 0
boolean bitStatus = bitRead(returnByte, pin_number);
if(bitStatus == 1) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
Serial.println(bitStatus, BIN);
delay(500);
}
void expanderWrite(byte _data ) {
Wire.beginTransmission(expander);
Wire.send(_data);
Wire.endTransmission();
}
byte expanderRead() {
byte _data;
Wire.requestFrom(expander, 1);
if(Wire.available()) {
_data = Wire.receive();
}
return _data;
}