public void FlamePattern(CancellationToken token, Pixels pixels) { var random = new Random(); using (var rpi = new WS281x(settings)) { int r, g, b; if (pixels.r > pixels.g && pixels.r > pixels.b) { r = 226; g = 121; b = 35; } else if (pixels.g > pixels.r && pixels.g > pixels.b) { r = 74; g = 150; b = 12; } else if (pixels.b > pixels.r && pixels.b > pixels.r) { r = 158; g = 8; b = 148; } else { r = 226; g = 121; b = 35; } while (true) { if (token.IsCancellationRequested) { this.logger.Information("Cancelling Lightning Pattern..."); break; } for (int i = 0; i < 46; i++) { int flicker = (int)(55 * random.NextDouble()); int r1 = r - flicker, g1 = g - flicker, b1 = b - flicker; if (r1 < 0) { r1 = 0; } if (g1 < 0) { g1 = 0; } if (b1 < 0) { b1 = 0; } rpi.SetLed(i, Color.FromArgb(255, r1, g1, b1)); } rpi.Render(); Thread.Sleep(random.Next(10, 133)); } } }
public void Execute(AbortRequest request, int gpioPin) { Console.Clear(); Console.Write("How many LEDs do you want to use: "); var ledCount = Int32.Parse(Console.ReadLine()); var settings = Settings.CreateDefaultSettings(); var pin = Pin.Gpio18; if (gpioPin == 19) { pin = Pin.Gpio19; } if (gpioPin == 10) { pin = Pin.Gpio10; } if (gpioPin == 21) { pin = Pin.Gpio21; } var controller = settings.AddController(ledCount, pin, StripType.WS2811_STRIP_RGB); using var device = new WS281x(settings); var colors = GetAnimationColors(); while (!request.IsAbortRequested) { for (var i = 0; i < controller.LEDCount; i++) { var colorIndex = (i + colorOffset) % colors.Count; device.SetLed(i, colors[colorIndex]); } device.Render(); colorOffset = (colorOffset + 1) % colors.Count; Thread.Sleep(500); } device.Reset(); }