12_neopixel_led_strip

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
12_neopixel_led_strip [2026/08/01 19:39] walkeradmin12_neopixel_led_strip [2026/08/02 13:48] (current) – [Knight Rider Lights] walkeradmin
Line 373: Line 373:
  
 Here is the full code: Here is the full code:
-<code | download>+<code:python | download>
 # WS2812 / NeoPixel Example # WS2812 / NeoPixel Example
 # Raspberry Pi Pico + MicroPython # Raspberry Pi Pico + MicroPython
Line 434: Line 434:
 \\  \\ 
 ---- ----
 +==== Knight Rider Lights ====
  
 +Who remembers these?
 +\\ 
 +\\ 
 +{{ :knight-rider-001.mp4?640 |}}
 +\\ 
 +Well I do :) and we can replicate this effect with our Pico and NeoPixel LEDs. The code for this is almost identical to the previous project where we have the running LEDs.
 +\\ 
 +\\ 
 +The major change is the addition of this part:
 +<code:python | download>
 +    # Backward direction
 +    for i in range(NUM_LEDS - 2, 0, -1):
 +        clear()
 +        np[i] = color
 +        np.write()
 +        time.sleep(delay)
 +</code>
  
 +In our previous project, the LEDs ran forward, then cycled colour, in this project we are not cycling the colour and the additional code runs the LEDs in reverse.
 +\\ 
 +\\ 
 +Here is the full code, explanation for how this works is at the end of this wiki page.
 +
 +<code:python | download>
 +# WS2812 / NeoPixel Example
 +# Raspberry Pi Pico + MicroPython
 +#
 +# Controls a strip of 12 LEDs connected to GP8.
 +
 +from machine import Pin
 +import neopixel
 +import time
 +
 +# -------------------------------
 +# Configuration
 +# -------------------------------
 +
 +LED_PIN = 8          # GPIO connected to DIN
 +NUM_LEDS = 12        # Number of LEDs, 0-11 is used, not 1-12
 +
 +# Create the NeoPixel object
 +np = neopixel.NeoPixel(Pin(LED_PIN), NUM_LEDS)
 +
 +# -------------------------------
 +# Helper Functions
 +# -------------------------------
 +
 +def clear():
 +    """Turn all LEDs off."""
 +    for i in range(NUM_LEDS):
 +        np[i] = (0, 0, 0)
 +    np.write()
 +
 +def chase_bounce(color, delay=0.1):
 +    """Move one LED up and down the strip."""
 +    # Forward direction
 +    for i in range(NUM_LEDS):
 +        clear()
 +        np[i] = color
 +        np.write()
 +        time.sleep(delay)
 +
 +    # Backward direction
 +    for i in range(NUM_LEDS - 2, 0, -1):
 +        clear()
 +        np[i] = color
 +        np.write()
 +        time.sleep(delay)
 +
 +# -------------------------------
 +# Main Program
 +# -------------------------------
 +
 +while True:
 +
 +    # Chase effect
 +    chase_bounce((255, 0, 0), 0.08)
 +</code>
 +
 +So, what does this extra code do? and how?
 +\\ 
 +\\
 +Here is an explanation of the reverse code block in general.
 +
 +<code:python | download>
 +# Backward direction (move the lit LED from right to left)
 +# range(NUM_LEDS - 2, 0, -1) generates:
 +# For 12 LEDs → 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
 +# - Start at LED 10 (second-to-last)
 +# - Stop at LED 1 (LED 0 is skipped to avoid repeating the end LED)
 +# - Step backwards by -1 each time
 +for i in range(NUM_LEDS - 2, 0, -1):
 +
 +    clear()              # Turn all LEDs off before lighting the next one
 +
 +    np[i] = color        # Light the current LED at position i
 +
 +    np.write()           # Send the updated LED data to the strip
 +
 +    time.sleep(delay)    # Pause so the movement is visible
 +</code>
 +
 +And this is what the line that makes the count to backwards actually does.
 +
 +<code:python | download>
 +range(NUM_LEDS - 2, 0, -1)
 +#Breakdown for NUM_LEDS = 12:
 +
 +Start: NUM_LEDS - 2 → 10
 +#(LED 11 was already lit in the forward chase)
 +
 +Stop: 0 
 +#(but Python stops before 0, so last value is 1)
 +
 +Step: -1
 +#(count backwards)
 +</code>
 +
 +For the reverse sequence, we don't need to worry about the first (0) or last (11) LEDs as these are already set by the forward sequence.
 +\\ 
 +\\ 
 +That's it! Oh, and don't worry, I won't be fitting these to my car :)
 +\\ 
 +\\ 
 +----
12_neopixel_led_strip.1785613199.txt.gz · Last modified: by walkeradmin