InputEvents v1.5.2
An easy to use but comprehensive Event Library for Buttons, Encoders, Encoder Buttons, Analog Inputs, Joysticks and Switches.
AdafruitPCF8574ExpanderAdapter.h
1#ifndef AdafruitPCF8574ExpanderAdapter_h
2#define AdafruitPCF8574ExpanderAdapter_h
3
4#include <Adafruit_PCF8574.h>
5#include "Arduino.h"
6#include "GpioExpanderAdapter/GpioExpanderAdapter.h"
7#include "PinAdapter/PinAdapter.h"
8
16
17public:
18
24
30 AdafruitPCF8574ExpanderAdapter(Adafruit_PCF8574& _pcf)
31 : pcf(_pcf)
32 {}
33
38 void begin() override {
39 pcf.begin(); //Use defaults
40 delayMicroseconds(400);
41 pinStates = pcf.digitalReadByte();
42 }
43
52 bool begin(uint8_t i2c_addr, TwoWire *wire = &Wire) {
53 bool ret = pcf.begin(i2c_addr, wire);
54 delayMicroseconds(400);
55 pinStates = pcf.digitalReadByte();
56 return ret;
57 }
58
59
64 void update() override {
65 pinStates = pcf.digitalReadByte();
66 }
67
74 void attachPin(byte pin, int mode = INPUT_PULLUP) override {
75 pcf.pinMode(pin, mode);
76 }
77
86 bool read(byte pin) override {
87 return bitRead(pinStates, pin);
88 }
89
97 bool updateAndRead(byte pin) {
98 return pcf.digitalRead(pin);
99 }
100
109 void write(byte pin, bool state) {
110 pcf.digitalWrite(pin, state);
111 }
112
118 bool canWrite() { return true; }
119
120 virtual ~AdafruitPCF8574ExpanderAdapter() = default;
121
122private:
123
124 Adafruit_PCF8574 pcf;
125 uint8_t pinStates = 0;
126};
127
128
129#endif
An implementation of the GpioExpanderAdapter For Adafruit's PCF8574 library.
Definition: AdafruitPCF8574ExpanderAdapter.h:15
void attachPin(byte pin, int mode=INPUT_PULLUP) override
Attach a pin and set its pin mode.
Definition: AdafruitPCF8574ExpanderAdapter.h:74
void update() override
Update the state of all input pins (called from loop() before updating EventButtons)
Definition: AdafruitPCF8574ExpanderAdapter.h:64
void begin() override
The default begin for a GPIOExpanderAdapter will use the default I2C address for the PCF8574.
Definition: AdafruitPCF8574ExpanderAdapter.h:38
bool begin(uint8_t i2c_addr, TwoWire *wire=&Wire)
Use this method instead of the default begin() to specify a different I2C addreess and optional Wire.
Definition: AdafruitPCF8574ExpanderAdapter.h:52
AdafruitPCF8574ExpanderAdapter()
Construct a AdafruitPCF8574ExpanderAdapter. An Adafruit_PCF8574 instance will be created for you.
Definition: AdafruitPCF8574ExpanderAdapter.h:23
bool updateAndRead(byte pin)
Update the expander over I2C and return a pin state. Not recommended, use a single uptate() and then ...
Definition: AdafruitPCF8574ExpanderAdapter.h:97
bool canWrite()
The PCF8574 can write a pins state.
Definition: AdafruitPCF8574ExpanderAdapter.h:118
void write(byte pin, bool state)
Write bool state to a pin.
Definition: AdafruitPCF8574ExpanderAdapter.h:109
AdafruitPCF8574ExpanderAdapter(Adafruit_PCF8574 &_pcf)
Construct a AdafruitPCF8574ExpanderAdapter with an already created Adafruit_PCF8574 instance.
Definition: AdafruitPCF8574ExpanderAdapter.h:30
bool read(byte pin) override
Returns the state of a pin on the expander.
Definition: AdafruitPCF8574ExpanderAdapter.h:86
The base class/interface specification for GPIO expanders.
Definition: GpioExpanderAdapter.h:10