private static void SetRelayStatus(SSD1306Manager manager, Dictionary <int, bool> enabledRelays) { manager.Clear(); manager.WriteMessage(0, 0, $"R1: {(enabledRelays[_pinouts[0]] ? "ON" : "OFF")}"); manager.WriteMessage(0, 80, $"R2: {(enabledRelays[_pinouts[1]] ? "ON" : "OFF")}"); manager.WriteMessage(2, 0, $"R3: {(enabledRelays[_pinouts[2]] ? "ON" : "OFF")}"); manager.WriteMessage(2, 80, $"R4: {(enabledRelays[_pinouts[3]] ? "ON" : "OFF")}"); manager.Update(); }
private static void ApplicationLoop(SSD1306Manager manager, GpioController controller, ButtonsManager buttonsManager, Dictionary <int, bool> enabledRelays) { Console.WriteLine("Start application loop"); SetRelayStatus(manager, enabledRelays); while (true) { List <MatrixButton> pressedButtons = buttonsManager.ArePressed(); foreach (var button in pressedButtons) { int buttonIndex = _matrixButtons.IndexOf(button); if (buttonIndex < 0) { continue; } int relayToEnable = _pinouts[buttonIndex]; if (!enabledRelays[relayToEnable]) { controller.Write(relayToEnable, PinValue.Low); enabledRelays[relayToEnable] = true; } else { controller.Write(relayToEnable, PinValue.High); enabledRelays[relayToEnable] = false; } } if (pressedButtons.Count > 0) { SetRelayStatus(manager, enabledRelays); } Thread.Sleep(500); if (!enabledRelays.ContainsValue(false)) { break; } } Console.WriteLine("End application loop"); }
static void Main(string[] args) { Console.WriteLine("App is up"); #if DEBUG Console.WriteLine("Waiting for debugger. Press any key to continue"); Console.ReadKey(); #endif SSD1306Manager screenManager = new SSD1306Manager(); GpioController gpioController = new GpioController(); ButtonsManager buttonsManager = new ButtonsManager(); InitializeScreen(screenManager); Dictionary <int, bool> enabledRelays = InitializeRelays(gpioController); InitializeMatrixButtons(gpioController, buttonsManager); ApplicationLoop(screenManager, gpioController, buttonsManager, enabledRelays); DeinitializeRelays(gpioController); DeinitializeMatrixButtons(buttonsManager); TurnOffScreen(screenManager); Console.WriteLine("App is down"); }
private static void TurnOffScreen(SSD1306Manager manager) { Console.WriteLine("Turn off screen"); manager.TurnOff(); Console.WriteLine("END Turn off screen"); }
private static void InitializeScreen(SSD1306Manager manager) { Console.WriteLine("Initialize Screen"); manager.TurnOn(); Console.WriteLine("END Initialize Screen"); }