22 explicit PCF8574(uint8_t address = 0x20,
24 uint8_t initialPinState = 0xFF,
25 TwoWire *wire = &Wire)
27 if (!pcf_.begin(initialPinState)) {
28 SUPLA_LOG_ERROR(
"Unable to find PCF8574 at address 0x%x", address);
30 SUPLA_LOG_DEBUG(
"PCF8574 is connected at address: 0x%x", address);
34 void customPinMode(
int channelNumber, uint8_t pin, uint8_t mode)
override {
35 if (mutex_) mutex_->lock();
36 if (mode == INPUT_PULLUP && pcf_.isConnected()) {
37 pcf_.write(pin, HIGH);
39 if (mutex_) mutex_->unlock();
42 void customDigitalWrite(
int channelNumber, uint8_t pin,
43 uint8_t val)
override {
44 if (mutex_) mutex_->lock();
45 if (pcf_.isConnected()) {
48 if (mutex_) mutex_->unlock();
51 int customDigitalRead(
int channelNumber, uint8_t pin)
override {
53 if (mutex_) mutex_->lock();
54 val = pcf_.isConnected() ? pcf_.read(pin) : 0;
55 if (mutex_) mutex_->unlock();
59 unsigned int customPulseIn(
int channelNumber, uint8_t pin, uint8_t value,
60 uint64_t timeoutMicro)
override {
64 void customAnalogWrite(
int channelNumber, uint8_t pin,
int val)
override {}
66 int customAnalogRead(
int channelNumber, uint8_t pin)
override {