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); } }
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(); }
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(); } }
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); } } }