Exemple #1
0
 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();
 }
Exemple #2
0
        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");
        }
Exemple #3
0
        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");
        }
Exemple #4
0
 private static void TurnOffScreen(SSD1306Manager manager)
 {
     Console.WriteLine("Turn off screen");
     manager.TurnOff();
     Console.WriteLine("END Turn off screen");
 }
Exemple #5
0
 private static void InitializeScreen(SSD1306Manager manager)
 {
     Console.WriteLine("Initialize Screen");
     manager.TurnOn();
     Console.WriteLine("END Initialize Screen");
 }