Spójrzcie proszę, czy poprawnie tworzę klasę
Code: Select all
#ifndef SRC_SUPLA_CONTROL_EXT2_MCP23017_H_
#define SRC_SUPLA_CONTROL_EXT2_MCP23017_H_
/*
Dependency: https://github.com/DFRobot/DFRobot_MCP23017,
use library manager to install it
*/
#include <DFRobot_MCP23017.h>
#include <supla/io.h>
namespace Supla {
namespace Control {
class Ext2MCP23017 : public Supla::Io {
public:
Ext2MCP23017(uint8_t addr = 0x20)
: addr(addr), Supla::Io(false) {
if (!mcp.begin()) {
SUPLA_LOG_DEBUG("Unable to find MCP23017");
} else {
Serial.print("MCP23017 is connected at address: 0x");
Serial.println(addr, HEX);
isConnected = true;
}
}
void customPinMode(int channelNumber, uint8_t pin, uint8_t mode) override {
if (isConnected) {
mcp.pinMode(DFRobot_MCP23017::ePin_t(pin), mode);
}
}
void customDigitalWrite(int channelNumber, uint8_t pin,
uint8_t val) override {
if (isConnected) {
mcp.digitalWrite(DFRobot_MCP23017::ePin_t(pin), val);
}
}
int customDigitalRead(int channelNumber, uint8_t pin) override {
return isConnected ? mcp.digitalRead(DFRobot_MCP23017::ePin_t(pin)) : 0;
}
unsigned int customPulseIn(int channelNumber, uint8_t pin, uint8_t value,
uint64_t timeoutMicro) override {
// add implementation or leave empty
return 0;
}
void customAnalogWrite(int channelNumber, uint8_t pin, int val) override {
// add implementation
}
int customAnalogRead(int channelNumber, uint8_t pin) override {
// add implementation
return 0;
}
protected:
::DFRobot_MCP23017 mcp;
uint8_t addr;
bool isConnected = false;
};
}; // namespace Control
}; // namespace Supla
#endif // SRC_SUPLA_CONTROL_EXT2_MCP23017_H_
