private static void Run() { var settings = new SpiConnectionSettings(0, 0) { ClockFrequency = 2_400_000, Mode = SpiMode.Mode0, DataBitLength = 8 }; var spi = SpiDevice.Create(settings); #if WS2808 s_neo = new Ws2808(spi, count); #else s_neo = new Ws2812b(spi, Count); #endif while (true) { ColorWipe(s_neo, Color.White, Count); ColorWipe(s_neo, Color.Red, Count); ColorWipe(s_neo, Color.Green, Count); ColorWipe(s_neo, Color.Blue, Count); TheatreChase(s_neo, Color.White, Count); TheatreChase(s_neo, Color.Red, Count); TheatreChase(s_neo, Color.Green, Count); TheatreChase(s_neo, Color.Blue, Count); Rainbow(s_neo, Count); RainbowCycle(s_neo, Count); TheaterChaseRainbow(s_neo, Count); } }
public static void ColorWipe(Ws28xx neo, Color color, int count) { BitmapImage img = neo.Image; for (var i = 0; i < count; i++) { img.SetPixel(i, 0, color); neo.Update(); } }
public static void RainbowCycle(Ws28xx neo, int count, int iterations = 1) { BitmapImage img = neo.Image; for (var i = 0; i < 255 * iterations; i++) { for (var j = 0; j < count; j++) { img.SetPixel(j, 0, Wheel(((int)(j * 255 / count) + i) & 255)); } neo.Update(); } }
public static void TheatreChase(Ws28xx neo, Color color, int count, int iterations = 10) { BitmapImage img = neo.Image; for (var i = 0; i < iterations; i++) { for (var j = 0; j < 3; j++) { for (var k = 0; k < count; k += 3) { img.SetPixel(j + k, 0, color); } neo.Update(); System.Threading.Thread.Sleep(100); for (var k = 0; k < count; k += 3) { img.SetPixel(j + k, 0, Color.Black); } } } }
public static void TheaterChaseRainbow(Ws28xx neo, int count) { BitmapImage img = neo.Image; for (var i = 0; i < 255; i++) { for (var j = 0; j < 3; j++) { for (var k = 0; k < count; k += 3) { img.SetPixel(k + j, 0, Wheel((k + i) % 255)); } neo.Update(); System.Threading.Thread.Sleep(100); for (var k = 0; k < count; k += 3) { img.SetPixel(k + j, 0, Color.Black); } } } }
/// <summary> /// Initializes a new instance of the <see cref="Animations"/> class. /// </summary> /// <param name="ledStrip">The led strip.</param> /// <param name="ledCount">The led count.</param> public Animations(Ws28xx ledStrip, int ledCount) { _ledStrip = ledStrip; _ledCount = ledCount; }