diff --git a/adafruit_neopxl8.py b/adafruit_neopxl8.py index b7d0eb0..1ee5404 100644 --- a/adafruit_neopxl8.py +++ b/adafruit_neopxl8.py @@ -32,7 +32,7 @@ bitloop: pull ifempty [1] ; don't start outputting HIGH unless data is available (always-low part) mov pins, ~ null [3] ; always-high part - out pins, 8 [4] ; variable part + {} ; variable part mov pins, null ; always-low part (last cycle is the 'pull ifempty' after wrap) jmp y--, bitloop ; always-low part @@ -46,7 +46,6 @@ jmp top """ -_ASSEMBLED = adafruit_pioasm.assemble(_PROGRAM) # Pixel color order constants RGB = "RGB" @@ -110,7 +109,7 @@ def __init__( brightness=1.0, auto_write=True, pixel_order=None, - ): + ): # pylint: disable=too-many-locals if n % num_strands: raise ValueError("Length must be a multiple of num_strands") if not pixel_order: @@ -124,25 +123,48 @@ def __init__( n, brightness=brightness, byteorder=pixel_order, auto_write=auto_write ) - data_len = bpp * n * 8 // num_strands + if num_strands == 1: + data_len = bpp * n + pack = ">L" + osr = False + loop_count = 8 * data_len + else: + data_len = bpp * n * 8 // num_strands + pack = " 1000: + print(f"{frame_count * 1000/dt:.1f}fps") + t0 = t1 + frame_count = 0