Example #1
0
        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);
        }
Example #2
0
        private static void CancelHandler(object sender, ConsoleCancelEventArgs e)
        {
            BitmapImage img = s_neo.Image;

            img.Clear();
            s_neo.Update();
            Console.Clear();
        }
Example #3
0
        public void Clear()
        {
            _logger.LogInformation("Clearing LEDs");
            BitmapImage img = Device.Image;

            img.Clear();
            Device.Update();
        }
Example #4
0
        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++;
            }
        }
    }
Example #5
0
        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);
        }
Example #6
0
 public void ClearLEDs()
 {
     matrices.ForEach(x => x.Clear());
     image.Clear();
     PushUpdate();
 }