From d7fc603afb99db2a5ab76a17440478f6b7baf589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Tue, 10 Jul 2018 13:40:10 +0200 Subject: [PATCH] Support for single pin latched relays (#1039) --- code/espurna/relay.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/espurna/relay.ino b/code/espurna/relay.ino index 6343f7be..451ba018 100644 --- a/code/espurna/relay.ino +++ b/code/espurna/relay.ino @@ -121,15 +121,15 @@ void _relayProviderStatus(unsigned char id, bool status) { } else if (_relays[id].type == RELAY_TYPE_LATCHED || _relays[id].type == RELAY_TYPE_LATCHED_INVERSE) { bool pulse = RELAY_TYPE_LATCHED ? HIGH : LOW; digitalWrite(_relays[id].pin, !pulse); - digitalWrite(_relays[id].reset_pin, !pulse); - if (status) { + if (GPIO_NONE != _relays[id].reset_pin) digitalWrite(_relays[id].reset_pin, !pulse); + if (status || (GPIO_NONE == _relays[id].reset_pin)) { digitalWrite(_relays[id].pin, pulse); } else { digitalWrite(_relays[id].reset_pin, pulse); } nice_delay(RELAY_LATCHING_PULSE); digitalWrite(_relays[id].pin, !pulse); - digitalWrite(_relays[id].reset_pin, !pulse); + if (GPIO_NONE != _relays[id].reset_pin) digitalWrite(_relays[id].reset_pin, !pulse); } #endif @@ -518,7 +518,7 @@ void _relayBoot() { void _relayConfigure() { for (unsigned int i=0; i<_relays.size(); i++) { pinMode(_relays[i].pin, OUTPUT); - if (_relays[i].type == RELAY_TYPE_LATCHED || _relays[i].type == RELAY_TYPE_LATCHED_INVERSE) { + if (GPIO_NONE != _relays[i].reset_pin) { pinMode(_relays[i].reset_pin, OUTPUT); } _relays[i].pulse = getSetting("relayPulse", i, RELAY_PULSE_MODE).toInt();