Ejemplo n.º 1
0
        BackgroundTaskDeferral _deferral;   // for a headless Windows 10 for IoT projects you need to hold a deferral to keep the app active in the background

        public void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();                                                                              // get the deferral handle

            MAX7219      driver = new MAX7219(4, MAX7219.Rotate.None, MAX7219.Transform.HorizontalFlip, MAX7219.ChipSelect.CE0); // 4 panels, rotate 90 degrees, SPI CE0
            LED8x8Matrix matrix = new LED8x8Matrix(driver);                                                                      // pass the driver to the LED8x8Matrix Graphics Library

            while (true)
            {
                matrix.ScrollStringInFromRight("Hello World 2015 ", 100);
            }
        }
Ejemplo n.º 2
0
        public MeadowApp()
        {
            Console.WriteLine("Creating Outputs...");

            ledPort = Device.CreateDigitalOutputPort(Device.Pins.OnboardLedGreen);

            display = new MAX7219(
                Device,
                din: Device.Pins.D00,
                cs: Device.Pins.D01,
                clk: Device.Pins.D02,
                displayCount: 1);

            Console.WriteLine("Run...");
            Run();
        }
Ejemplo n.º 3
0
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();  // get the deferral handle

            int count = 0;

            MAX7219             driver = new MAX7219(2);
            SevenSegmentDisplay ssd    = new SevenSegmentDisplay(driver);
            BMP180 bmp = new BMP180(BMP180.Mode.HIGHRES);

            ssd.FrameClear();
            ssd.FrameDraw();
            ssd.SetBrightness(4);

            while (true)
            {
                temperature = bmp.Temperature.DegreesCelsius;

                data.Clear();

                // is temperature less than 3 digits and there is a decimal part too then right pad to 5 places as decimal point does not take up a digit space on the display
                if (temperature < 100 && temperature != (int)temperature)
                {
                    data.Append($"{Math.Round(temperature, 1)}C".PadRight(5));
                }
                else
                {
                    data.Append($"{Math.Round(temperature, 0)}C".PadRight(4));
                }

                data.Append(Math.Round(bmp.Pressure.Hectopascals, 0));

                if (blink = !blink)
                {
                    data.Append(".");
                }                                          // add a blinking dot on bottom right as an I'm alive indicator

                ssd.DrawString(data.ToString());

                ssd.DrawString(count++, 1);

                ssd.FrameDraw();

                Task.Delay(2000).Wait();
            }
        }
Ejemplo n.º 4
0
        private async Task InitDisplay()
        {
            /* Initialize the display */
            try
            {
                var driver = new MAX7219(2);
                ssd = new SevenSegmentDisplay(driver);
                ssd.FrameClear();
                ssd.FrameDraw();
                ssd.SetBrightness(10);

                await SerialWriteAsync("Starting...");
            }
            catch (Exception ex)
            {
                throw new Exception("Display Initialization Failed", ex);
            }
        }
        public async void Start()
        {
            var driver = new MAX7219(4, MAX7219.Rotate.None, MAX7219.Transform.HorizontalFlip, MAX7219.ChipSelect.CE1);

            LED8x8Matrix matrix = new LED8x8Matrix(driver);

            matrix.SetBrightness(2);

            while (true)
            {
                matrix.FrameClear();
                matrix.ScrollStringInFromRight("Hello World 2015", 100);

                matrix.FrameClear();
                matrix.ScrollStringInFromLeft("Hello World 2015", 100);

                //continue;

                for (ushort p = 0; p < matrix.PanelsPerFrame; p++)
                {
                    matrix.DrawSymbol(Grid8x8.Symbols.Block, Led.On, p);
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }


                for (int p = 0; p < matrix.Length; p++)
                {
                    matrix.FrameSet(Led.On, p);
                    matrix.FrameSet(Led.On, matrix.Length - 1 - p);

                    matrix.FrameDraw();
                    await Task.Delay(2);

                    matrix.FrameSet(Led.Off, p);
                    matrix.FrameSet(Led.Off, matrix.Length - 1 - p);

                    matrix.FrameDraw();
                    await Task.Delay(2);
                }


                for (int c = 0; c < matrix.ColumnsPerFrame; c = c + 2)
                {
                    matrix.ColumnDrawLine(c);
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }


                for (int r = 0; r < matrix.RowsPerPanel; r = r + 2)
                {
                    matrix.RowDrawLine(r);
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }

                await Task.Delay(1000);

                for (ushort i = 0; i < matrix.PanelsPerFrame; i++)
                {
                    matrix.DrawLetter(i.ToString()[0], Led.On, i);
                }

                matrix.FrameDraw();
                await Task.Delay(1000);

                for (int r = 0; r < matrix.RowsPerPanel * 2; r++)
                {
                    matrix.FrameRollDown();
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }

                for (int r = 0; r < matrix.RowsPerPanel * 2; r++)
                {
                    matrix.FrameRollUp();
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }

                for (int c = 0; c < matrix.ColumnsPerFrame * 1; c++)
                {
                    matrix.FrameRollRight();
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }

                for (int c = 0; c < matrix.ColumnsPerFrame * 1; c++)
                {
                    matrix.FrameRollLeft();
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }


                //await Task.Delay(1000);
                //continue;

                matrix.DrawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890", 100, 0);
                matrix.FrameClear();

                for (int i = 0; i < matrix.RowsPerPanel; i++)
                {
                    matrix.DrawBox(i, i, matrix.ColumnsPerFrame - (i * 2), matrix.RowsPerPanel - (i * 2), Led.On);
                    matrix.FrameDraw();
                    await Task.Delay(100);
                }

                for (byte l = 0; l < 2; l++)
                {
                    matrix.SetFrameState(LedDriver.Display.Off);
                    await Task.Delay(250);

                    matrix.SetFrameState(LedDriver.Display.On);
                    await Task.Delay(250);
                }



                matrix.FrameClear();

                for (int r = 0; r < 2; r++)
                {
                    for (int i = 0; i < matrix.RowsPerPanel; i++)
                    {
                        matrix.RowDrawLine(i, i - 0, matrix.ColumnsPerFrame - i - 1);
                        matrix.FrameDraw();
                        await Task.Delay(50);
                    }

                    //for (byte l = 0; l < 6; l++) {
                    //    matrix.SetBrightness(l);
                    //    await Task.Delay(250);
                    //}

                    //matrix.SetBrightness(1);

                    for (int i = 0; i < matrix.RowsPerPanel; i++)
                    {
                        matrix.RowDrawLine(i, i - 0, matrix.ColumnsPerFrame - i - 1, Led.Off);
                        matrix.FrameDraw();
                        await Task.Delay(50);
                    }
                }

                await Task.Delay(500);

                matrix.FrameClear();

                matrix.ScrollStringInFromRight("Hello World ", 100);
                matrix.FrameClear();
                matrix.ScrollStringInFromLeft("Happy Birthday ", 100);


                for (int i = 0; i < matrix.fontSimple.Length; i = i + matrix.PanelsPerFrame)
                {
                    for (int p = 0; p < matrix.PanelsPerFrame; p++)
                    {
                        if (p + i >= matrix.fontSimple.Length)
                        {
                            break;
                        }
                        matrix.DrawBitmap(matrix.fontSimple[p + i], Led.On, (p + i) % matrix.PanelsPerFrame);
                    }
                    matrix.FrameDraw();
                    await Task.Delay(100 *matrix.PanelsPerFrame);
                }

                foreach (Grid8x8.Symbols sym in Enum.GetValues(typeof(Grid8x8.Symbols)))
                {
                    for (int p = 0; p < matrix.PanelsPerFrame; p++)
                    {
                        matrix.DrawSymbol(sym, Led.On, p);
                    }
                    matrix.FrameDraw();
                    await Task.Delay(100 *matrix.PanelsPerFrame);
                }
            }
        }