Merge pull request #274 from biveraxe/ver4dev

Исправляем баг с работой IoTGpio
This commit is contained in:
2023-04-30 11:59:46 +03:00
committed by GitHub
6 changed files with 33 additions and 27 deletions

View File

@@ -202,6 +202,11 @@
"round": 3,
"pin": 39,
"int": 5,
"rms": 1,
"vref": 5000,
"sens": 100,
"adczero": 512,
"btn-setZero": "nil",
"num": 13
},
{
@@ -394,6 +399,7 @@
"pin": 16,
"pinMode": "INPUT",
"debounceDelay": 3,
"multiply": 1,
"num": 26
},
{

View File

@@ -6,12 +6,12 @@ class IoTGpio {
IoTGpio(int pins);
~IoTGpio();
virtual void pinMode(uint8_t pin, uint8_t mode);
virtual void digitalWrite(uint8_t pin, uint8_t val);
virtual int digitalRead(uint8_t pin);
virtual int analogRead(uint8_t pin);
virtual void analogWrite(uint8_t pin, int val);
virtual void digitalInvert(uint8_t pin);
virtual void pinMode(int pin, uint8_t mode);
virtual void digitalWrite(int pin, uint8_t val);
virtual int digitalRead(int pin);
virtual int analogRead(int pin);
virtual void analogWrite(int pin, int val);
virtual void digitalInvert(int pin);
int index;
void regDriver(IoTGpio* newDriver);

View File

@@ -10,32 +10,32 @@ IoTGpio::~IoTGpio(){
}
void IoTGpio::pinMode(uint8_t pin, uint8_t mode) {
void IoTGpio::pinMode(int pin, uint8_t mode) {
int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->pinMode(pin - pinH*100, mode);
else ::pinMode(pin, mode);
}
void IoTGpio::digitalWrite(uint8_t pin, uint8_t val) {
void IoTGpio::digitalWrite(int pin, uint8_t val) {
int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->digitalWrite(pin - pinH*100, val);
else ::digitalWrite(pin, val);
}
int IoTGpio::digitalRead(uint8_t pin) {
int IoTGpio::digitalRead(int pin) {
int pinH = pin/100;
if (_drivers[pinH]) return _drivers[pinH]->digitalRead(pin - pinH*100);
else return ::digitalRead(pin);
}
int IoTGpio::analogRead(uint8_t pin) {
int IoTGpio::analogRead(int pin) {
int pinH = pin/100;
if (_drivers[pinH]) return _drivers[pinH]->analogRead(pin - pinH*100);
else return ::analogRead(pin);
}
void IoTGpio::analogWrite(uint8_t pin, int val) {
void IoTGpio::analogWrite(int pin, int val) {
int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->analogWrite(pin - pinH*100, val);
else {
@@ -48,7 +48,7 @@ void IoTGpio::analogWrite(uint8_t pin, int val) {
}
}
void IoTGpio::digitalInvert(uint8_t pin) {
void IoTGpio::digitalInvert(int pin) {
int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->digitalInvert(pin - pinH*100);
else ::digitalWrite(pin, 1 - ::digitalRead(pin));

View File

@@ -14,19 +14,19 @@ class Mcp23008Driver : public IoTGpio {
}
}
void pinMode(uint8_t pin, uint8_t mode) {
void pinMode(int pin, uint8_t mode) {
_mcp.pinMode(pin, mode);
}
void digitalWrite(uint8_t pin, uint8_t val) {
void digitalWrite(int pin, uint8_t val) {
_mcp.digitalWrite(pin, val);
}
int digitalRead(uint8_t pin) {
int digitalRead(int pin) {
return _mcp.digitalRead(pin);
}
void digitalInvert(uint8_t pin) {
void digitalInvert(int pin) {
_mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin));
}

View File

@@ -14,19 +14,19 @@ class Mcp23017Driver : public IoTGpio {
}
}
void pinMode(uint8_t pin, uint8_t mode) {
void pinMode(int pin, uint8_t mode) {
_mcp.pinMode(pin, mode);
}
void digitalWrite(uint8_t pin, uint8_t val) {
void digitalWrite(int pin, uint8_t val) {
_mcp.digitalWrite(pin, val);
}
int digitalRead(uint8_t pin) {
int digitalRead(int pin) {
return _mcp.digitalRead(pin);
}
void digitalInvert(uint8_t pin) {
void digitalInvert(int pin) {
_mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin));
}

View File

@@ -30,7 +30,7 @@ class Adafruit_PCF8574_mod {
return _readbuf;
}
bool digitalWrite(uint8_t pinnum, bool val) {
bool digitalWrite(int pinnum, bool val) {
if (val) {
_writebuf |= 1 << pinnum;
} else {
@@ -39,7 +39,7 @@ class Adafruit_PCF8574_mod {
return i2c_dev->write(&_writebuf, 1);
}
bool pinMode(uint8_t pinnum, uint8_t val) {
bool pinMode(int pinnum, uint8_t val) {
if ((val == INPUT) || (val == INPUT_PULLUP)) {
_writebuf |= 1 << pinnum;
} else {
@@ -48,7 +48,7 @@ class Adafruit_PCF8574_mod {
return i2c_dev->write(&_writebuf, 1);
}
bool digitalRead(uint8_t pinnum) {
bool digitalRead(int pinnum) {
i2c_dev->read(&_readbuf, 1);
return (_readbuf >> pinnum) & 0x1;
}
@@ -70,19 +70,19 @@ class Pcf8574Driver : public IoTGpio {
}
}
void pinMode(uint8_t pin, uint8_t mode) {
void pinMode(int pin, uint8_t mode) {
_pcf.pinMode(pin, mode);
}
void digitalWrite(uint8_t pin, uint8_t val) {
void digitalWrite(int pin, uint8_t val) {
_pcf.digitalWrite(pin, val);
}
int digitalRead(uint8_t pin) {
int digitalRead(int pin) {
return _pcf.digitalRead(pin);
}
void digitalInvert(uint8_t pin) {
void digitalInvert(int pin) {
_pcf.digitalWrite(pin, 1 - _pcf.digitalRead(pin));
}