static void Main(string[] args) { using (GpioController controller = new GpioController()) { workingLed = new LED(controller, pin1); breakLed = new LED(controller, pin2); freeLed = new LED(controller, pin3); workingTimer = new Timer(new TimeSpan(0, 30, 0)); breakTimer = new Timer(new TimeSpan(0, 5, 0)); freeTimer = new Timer(new TimeSpan(0, 0, 0)); workingButton = new HardwareButton(controller, button1, makeDelegate(workingTimer, workingLed)); breakButton = new HardwareButton(controller, button1, makeDelegate(breakTimer, breakLed)); freeButton = new HardwareButton(controller, button1, makeDelegate(freeTimer, freeLed)); while (true) { if (workingTimer?.expired == true || breakTimer?.expired == true) { SetAllLEDSState(LED.State.Blinking); } workingLed.DoAction(); breakLed.DoAction(); freeLed.DoAction(); Thread.Sleep(250); } } }
public static HardwareButton.ButtonTrigger makeDelegate(Timer t, LED l) { return(delegate(bool lastCallState) { if (AreTimersRunning() && lastCallState) { MakeAllLEDSBlinkShort(); return true; } t.Reset(); SetAllLEDSState(LED.State.Off); l.myState = LED.State.On; return false; }); }