83 lines
1.6 KiB
C++
83 lines
1.6 KiB
C++
#include "wled.h"
|
|
|
|
//Use userVar0 and userVar1 (API calls &U0=,&U1=, uint16_t)
|
|
|
|
//gets called once at boot. Do all initialization that doesn't depend on network here
|
|
void userSetup()
|
|
{
|
|
|
|
}
|
|
|
|
//gets called every time WiFi is (re-)connected. Initialize own network interfaces here
|
|
void userConnected()
|
|
{
|
|
|
|
}
|
|
|
|
/*
|
|
* Physical IO
|
|
*/
|
|
#define PIN_UP_RELAY 4
|
|
#define PIN_DN_RELAY 5
|
|
#define PIN_ON_TIME 500
|
|
bool upActive = false, upActiveBefore = false, downActive = false, downActiveBefore = false;
|
|
unsigned long upStartTime = 0, downStartTime = 0;
|
|
|
|
void handleRelay()
|
|
{
|
|
//up and down relays
|
|
if (userVar0) {
|
|
upActive = true;
|
|
if (userVar0 == 1) {
|
|
upActive = false;
|
|
downActive = true;
|
|
}
|
|
userVar0 = 0;
|
|
}
|
|
|
|
if (upActive)
|
|
{
|
|
if(!upActiveBefore)
|
|
{
|
|
pinMode(PIN_UP_RELAY, OUTPUT);
|
|
digitalWrite(PIN_UP_RELAY, LOW);
|
|
upActiveBefore = true;
|
|
upStartTime = millis();
|
|
DEBUG_PRINTLN("UPA");
|
|
}
|
|
if (millis()- upStartTime > PIN_ON_TIME)
|
|
{
|
|
upActive = false;
|
|
DEBUG_PRINTLN("UPN");
|
|
}
|
|
} else if (upActiveBefore)
|
|
{
|
|
pinMode(PIN_UP_RELAY, INPUT);
|
|
upActiveBefore = false;
|
|
}
|
|
|
|
if (downActive)
|
|
{
|
|
if(!downActiveBefore)
|
|
{
|
|
pinMode(PIN_DN_RELAY, OUTPUT);
|
|
digitalWrite(PIN_DN_RELAY, LOW);
|
|
downActiveBefore = true;
|
|
downStartTime = millis();
|
|
}
|
|
if (millis()- downStartTime > PIN_ON_TIME)
|
|
{
|
|
downActive = false;
|
|
}
|
|
} else if (downActiveBefore)
|
|
{
|
|
pinMode(PIN_DN_RELAY, INPUT);
|
|
downActiveBefore = false;
|
|
}
|
|
}
|
|
|
|
//loop. You can use "if (WLED_CONNECTED)" to check for successful connection
|
|
void userLoop()
|
|
{
|
|
handleRelay();
|
|
} |