private async Task RunInternalAsync(IPattern pattern) { await Task.Run(() => { long currentTick = DateTime.Now.Ticks; long lastTick = DateTime.Now.Ticks; double delta = 0; while (!_cancellationTokenSource.IsCancellationRequested) { currentTick = DateTime.Now.Ticks; delta = (double)(currentTick - lastTick) / (double)TimeSpan.TicksPerSecond; lastTick = currentTick; pattern.Update(delta); BitmapImage img = Device.Image; img.Clear(); for (int i = 0; i < LedCount; i++) { img.SetPixel(i, 0, pattern.Render(i)); } Device.Update(); } Clear(); }, _cancellationTokenSource.Token); }
private static void CancelHandler(object sender, ConsoleCancelEventArgs e) { BitmapImage img = s_neo.Image; img.Clear(); s_neo.Update(); Console.Clear(); }
public void Clear() { _logger.LogInformation("Clearing LEDs"); BitmapImage img = Device.Image; img.Clear(); Device.Update(); }
static void Main() { var settings = new SpiConnectionSettings(0, 0) { ClockFrequency = 2_400_000, Mode = SpiMode.Mode0, DataBitLength = 8 }; // Create a Neo Pixel x8 stick on spi 0.0 var spi = new UnixSpiDevice(settings); #if WS2808 var neo = new Ws2808(spi, count); #else var neo = new Ws2812b(spi, count); #endif // Display basic colors for 5 sec BitmapImage img = neo.Image; img.Clear(); img.SetPixel(0, 0, Color.White); img.SetPixel(1, 0, Color.Red); img.SetPixel(2, 0, Color.Green); img.SetPixel(3, 0, Color.Blue); img.SetPixel(4, 0, Color.Yellow); img.SetPixel(5, 0, Color.Cyan); img.SetPixel(6, 0, Color.Magenta); img.SetPixel(7, 0, Color.FromArgb(unchecked ((int)0xffff8000))); neo.Update(); System.Threading.Thread.Sleep(5000); // Fade in first pixel byte b = 0; img.Clear(); while (true) { img.SetPixel(0, 0, Color.FromArgb(0xff, b, b, b)); neo.Update(); System.Threading.Thread.Sleep(10); b++; } } }
public TestController(ILogger <TestController> logger) { _logger = logger ?? throw new NotImplementedException(logger.GetType().Name); var settings = new SpiConnectionSettings(0, 0) { ClockFrequency = 2_400_000, Mode = SpiMode.Mode0, DataBitLength = 8 }; var spi = SpiDevice.Create(settings); matrixDevice = new Ws2812b(spi, 32, 8); matrixImage = matrixDevice.Image; matrixImage.Clear(); _logger.LogInformation("Image: {width}x{height}", matrixImage.Width, matrixImage.Height); }
public void ClearLEDs() { matrices.ForEach(x => x.Clear()); image.Clear(); PushUpdate(); }