ESP8266_dual_nRF24L01_gateway/src/libs/PCF8574/PCF8574.h
2025-11-05 23:58:20 +01:00

39 lines
828 B
C++

#ifndef PCF8574_H
#define PCF8574_H
#include <Arduino.h>
#include <Wire.h>
/***
* A very simple class to drive a PCF8574 chip
*
* Anatole SCHRAMM-HENRY -- Th3maz1ng
***/
class PCF8574
{
public:
enum Pin{P0 = 1, P1 = 2, P2 = 4, P3 = 8, P4 = 16, P5 = 32, P6 = 64, P7 = 128};
PCF8574(uint8_t address, TwoWire &twc = Wire);
boolean begin();
void pinMode(Pin pin, boolean mode = INPUT);
void digitalWrite(Pin pin, boolean mode);
boolean digitalRead(Pin pin);
void digitalReadAll(boolean array[8]);
boolean getPinMode(Pin pin);
void getPinModeAll(boolean array[8]);
void togglePin(Pin pin);
// Reset the IRQ by doing a dummy read
void resetIRQ();
private:
TwoWire &_twc;
uint8_t _address;
uint8_t _pinConfig;
uint8_t _pddr;
protected:
};
#endif //PCF8574_H