You need a button on the screen, like:
- Code: Select all
AS3.Addbutton(x, y, w, h, true, false, buttonimagenumber, 5000 + yourLEDnumber, layernumber);
Set relayPort, relayPin and buttonLED in the following code as you need.
And this is the macro, which you have to run (and enable autorun) in macroloops:
- Code: Select all
// ================================================================================================
// Switch output in reset state
// ================================================================================================
// Use UCCNC_SwLED plugin to handle switchbuttons. See http://www.forum.cncdrive.com/viewtopic.php?f=14&t=856
bool buttonState = exec.GetLED(buttonLED);
if (relayLED == -1)
relayLED = GetLEDNumber(relayPort, relayPin);
if (exec.GetLED(relayLED) != buttonState)
{
if (buttonState)
exec.Setoutpin(relayPort, relayPin);
else
exec.Clroutpin(relayPort, relayPin);
}
// ================================================================================================
#Events
// ================================================================================================
const int relayPort = 2; // Port number of relay
const int relayPin = 2; // Pin number of relay
const int buttonLED = 471; // LED to store required state
static int relayLED = -1;
static int switchButton = 5000 + buttonLED;
// use AS3.Addbutton(x, y, w, h, true, false, buttonimagenumber, 5000 + yourLEDnumber, layernumber);
// =============== LED number based on port and pin
int GetLEDNumber(int port, int pin)
{
int LED = -1;
switch (port)
{
case 1:
LED = pin;
break;
case 2:
LED = 68 + pin;
break;
case 3:
LED = 85 + pin;
break;
case 4:
LED = 102 + pin;
break;
case 5:
LED = 119 + pin;
break;
}
return LED;
}