The PCF8574 is an 8 bits I/O port expander that uses the I2C protocol. Using this IC, you can use only the SDA and SCL pins of your Linkit One board to control up to 8 digital I/O ports.
A0,A1,A2 are address pins
P0,P1,P2,P3,P4,P5,P6,P7 are digital I/O ports
SDA,SCL are the I2C pins
If we set pins A0 to A2 to GND, our device address in binary will be 0x20, that’s exactly what I did in my example. To enable read and write there are different values required you can see these in the image below
Schematic
Note that the PCF8574 is a current sink device so you do not require the current limiting resistors
I have only shown 2 LEDs, also note that I have shown A0, A1 and A2 tied to GND, this is what my test module had selected.
Code
This example flashes the led’s and does not require any external libraries
You can see that we send hex values, when these are converted to binary you can see that we are toggling pins either 0 or 1. On or Off
#include <Wire.h> // address of PCF8574 IC #define PCF8574_ADDR (0x20) void setup() { Wire.begin(); } void loop() { //send the data Wire.beginTransmission(PCF8574_ADDR); Wire.write(0xAA); //send AA - 10101010 Wire.endTransmission(); delay(1000); Wire.beginTransmission(PCF8574_ADDR); Wire.write(0x55); //send 55 - 01010101 Wire.endTransmission(); delay(1000); }
Link
PCF8574 PCF8574T I/O for I2C Port Interface Support Cascading Extended Module