예제 #1
0
        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);
            }
        }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
        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);
                    }
                }
            }
        }
예제 #5
0
        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);
                    }
                }
            }
        }
예제 #6
0
 /// <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;
 }