37 explicit PCF8574(uint8_t address = 0x20,
39 uint8_t initialPinState = 0xFF,
40 TwoWire *wire = &Wire)
42 if (!pcf_.begin(initialPinState)) {
43 SUPLA_LOG_ERROR(
"Unable to find PCF8574 at address 0x%x", address);
45 SUPLA_LOG_DEBUG(
"PCF8574 is connected at address: 0x%x", address);
49 void customPinMode(
int channelNumber, uint8_t pin, uint8_t mode)
override {
50 if (mutex_) mutex_->lock();
51 if (mode == INPUT_PULLUP && pcf_.isConnected()) {
52 pcf_.write(pin, HIGH);
54 if (mutex_) mutex_->unlock();
57 void customDigitalWrite(
int channelNumber, uint8_t pin,
58 uint8_t val)
override {
59 if (mutex_) mutex_->lock();
60 if (pcf_.isConnected()) {
63 if (mutex_) mutex_->unlock();
66 int customDigitalRead(
int channelNumber, uint8_t pin)
override {
68 if (mutex_) mutex_->lock();
69 val = pcf_.isConnected() ? pcf_.read(pin) : 0;
70 if (mutex_) mutex_->unlock();
74 unsigned int customPulseIn(
int channelNumber, uint8_t pin, uint8_t value,
75 uint64_t timeoutMicro)
override {
79 void customAnalogWrite(
int channelNumber, uint8_t pin,
int val)
override {}
81 int customAnalogRead(
int channelNumber, uint8_t pin)
override {