#include #define SlowPin 13 //D7 GPIO13 #define FastPin 12 //D6 GPIO15 #define SwitchTime 0.5 Ticker SwitchTicker; //https://github.com/esp8266/Arduino/blob/master/libraries/Ticker/src/Ticker.h enum SwitchState {isoff,isslow,ison}; SwitchState swst = isoff; SwitchState gost = isoff; void changeState() { if (swst != gost) { if (gost == ison) digitalWrite(FastPin, LOW); else digitalWrite(FastPin, HIGH); swst = gost; } else { digitalWrite(SlowPin, HIGH); SwitchTicker.detach(); } } void initSlowSwitch() { digitalWrite(SlowPin, HIGH); pinMode(SlowPin, OUTPUT); digitalWrite(FastPin, HIGH); pinMode(FastPin, OUTPUT); } void SlowSwitch(bool switchON) { if (switchON) gost = ison; else gost = isoff; if(swst != gost) { swst = isslow; digitalWrite(SlowPin, LOW); SwitchTicker.attach(SwitchTime, changeState); } }