public static void BitBangSend(this IPiGPIO gpio, int gpioData, int gpioClock, byte[] data)
 {
     for (int i = 0; i < data.Length; i++)
     {
         for (int o = 7; o >= 0; o--)
         {
             gpio.Write(gpioData, (data[i] & o) != 0);
             gpio.Write(gpioClock, true);
             gpio.Write(gpioClock, false);
         }
     }
 }
Esempio n. 2
0
        private static int Run(IPiGPIO gpio)
        {
            Console.WriteLine("Starting application...");
            using (gpio)
            {
                g = gpio;
                Console.WriteLine("Starting driver...");
                drv = new CoremanHub75LedMatrix(gpio, Hub75PinLayout.Regular);
                //Set all to 0
                drv.Init();

                Console.WriteLine("Looping...");
                Console.CancelKeyPress += (s, e) =>
                {
                    if (run)
                    {
                        e.Cancel = true;
                        run      = false;
                        Console.WriteLine("Soft exiting...");
                    }
                    else
                    {
                        Console.WriteLine("Hard exiting...");
                    }
                };

                KeyHelp(false);

                bool a = false;
                bool b = false;
                bool o = false;
                bool c = false;
                bool l = false;


                g.Write(drv.Layout.A, a);
                g.Write(drv.Layout.B, b);
                g.Write(drv.Layout.OE, o);
                g.Write(drv.Layout.Strobe, l);
                g.Write(drv.Layout.Clock, c);

                int pos = 0;
                while (run)
                {
                    if (!Console.KeyAvailable)
                    {
                        Thread.Sleep(10);
                        continue;
                    }
                    var key = Console.ReadKey(true);
                    switch (key.Key)
                    {
                    case ConsoleKey.F1: KeyHelp(); break;

                    case ConsoleKey.D: TransmitRowPixel(pos, false, false, true); Console.Write("d"); break;

                    case ConsoleKey.A: a = !a; gpio.Write(drv.Layout.A, a); Console.Write(a ? "A" : "a"); break;

                    case ConsoleKey.B: b = !b; gpio.Write(drv.Layout.B, b); Console.Write(b ? "B" : "b"); break;

                    case ConsoleKey.C: c = !c; gpio.Write(drv.Layout.C, c); Console.Write(c ? "C" : "c"); break;

                    case ConsoleKey.O: o = !o; gpio.Write(drv.Layout.OE, o); Console.Write(o ? "O" : "o"); break;

                    case ConsoleKey.L: l = !l; gpio.Write(drv.Layout.Strobe, l); Console.Write(l ? "L" : "l"); break;

                    case ConsoleKey.Add: pos = Math.Min(63, pos + 1); Console.Write("+{0:X2}", pos); break;

                    case ConsoleKey.Subtract: pos = Math.Max(0, pos - 1); Console.Write("-{0:X2}", pos); break;

                    case ConsoleKey.I: Interleaved(); Console.Write("i"); break;

                    case ConsoleKey.U: Interleaved2(); Console.Write("u"); break;

                    case ConsoleKey.X: ChessBoardScan(); break;
                    }
                }
            }
            return(0);
        }
Esempio n. 3
0
 private static void Clock()
 {
     g.Write(drv.Layout.Clock, true);
     g.Write(drv.Layout.Clock, false);
 }