From 2869ec9300e8e0506fab0df8252033732bb86b80 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Thu, 19 Feb 2026 17:53:57 +1300 Subject: [PATCH] Allow seperate buffer with offset --- pico/lib/dma.py | 4 ++-- pico/lib/ws2812.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pico/lib/dma.py b/pico/lib/dma.py index 04abead..85af8d9 100644 --- a/pico/lib/dma.py +++ b/pico/lib/dma.py @@ -93,8 +93,8 @@ class PIO_DMA_Transfer(): self.dma_chan.CTRL_TRIG.INCR_WRITE = 0 self.dma_chan.CTRL_TRIG.INCR_READ = 1 - def start_transfer(self, buffer): - self.dma_chan.READ_ADDR_REG = uctypes.addressof(buffer) + def start_transfer(self, buffer, offset=0): + self.dma_chan.READ_ADDR_REG = uctypes.addressof(buffer) + offset self.dma_chan.CTRL_TRIG.EN = 1 def transfer_count(self): diff --git a/pico/lib/ws2812.py b/pico/lib/ws2812.py index 5d0b865..9b59957 100644 --- a/pico/lib/ws2812.py +++ b/pico/lib/ws2812.py @@ -29,8 +29,10 @@ class WS2812B: self.invert = invert self.pio_dma = dma.PIO_DMA_Transfer(state_machine+4, state_machine, 8, num_leds*3) - def show(self): - self.pio_dma.start_transfer(self.ar) + def show(self, array=None, offset=0): + if array is None: + array = self.ar + self.pio_dma.start_transfer(array, offset) def set(self, i, color): self.ar[i*3] = int(color[1]*self.brightness)