Paul Sutton

PhysicalComputing

Pi pico Larson Scanner part 3

Following Saturdays STEM Group meet up, Where Vance has rewirtten my scanner program so that it is more efficient. I have included the new code below. I have now made an improvement by adding a 10 segment LED display and getting this working my modifying the code that Vance helped me with.

The new code, using an array to store pin numbers is below

#flash on board pico led
# updated 1/7/2023 - working code
import machine 
import utime

# Vance
led_pins = [11,12,13,14,15]

#delay = input("Time Delay: ")

#bind leds gpip to variables

leds = []
for pin in led_pins:
    # Set to output
    leds.append(machine.Pin(pin, machine.Pin.OUT))
    # Turn the LED off
    leds[-1].value(0) #off
    
    
utime.sleep(3)

delay = 0.1 #set delay

while True:
    # Led sequence upwards
    for led in leds: 
        led.value(1)
        utime.sleep(delay)
        led.value(0)
   
    # Led sequence downwards
    for led in leds[-1:0:-1]:
        led.value(1)
        utime.sleep(delay)
        led.value(0)       

While my new code modification is here.

# use 10 led segment display
led_pins = [1,2,3,4,5,6,7,8,9,]

Which is just 1 line of actual code and a comment. The result of this is presented in the video below. I had to resolder the board with the LED display on as it had some joints missing.

Video

The video can be found here

Tags

#uPython,#RaspberryPiPico,#LarsonScanner,#PhysicalComputing


MastodonPeertubeQoto sign up

Donate using Liberapay

Pi pico Larson Scanner part 2

Further to the previous post. I spent some time on this, trying to fix the problem. This is mostly re-written.

I have also made the lights run faster as per video below

Code is below.

delay = 0.05 #set delay

I would recommand a delay of 1 second for testing purposes, so it is easier to try and follow the code as it is running.

  • larsonscan.py
#flash on board pico led
# updated 1/7/2023 - working code
import machine 
import utime

#delay = input("Time Delay: ")

#bind LEDs / GPIO pins to variables

ledg = machine.Pin(11, machine.Pin.OUT) #green
ledb = machine.Pin(12, machine.Pin.OUT) # blue led
ledw = machine.Pin(13, machine.Pin.OUT) # white led
ledy = machine.Pin(14, machine.Pin.OUT) # yellow led
ledr = machine.Pin(15, machine.Pin.OUT) # red led 

#turn all LEDs off 

ledg.value(0) #off
ledb.value(0) #off
ledw.value(0) #off
ledy.value(0) #off
ledr.value(0) #off

utime.sleep(3)

#utime.sleep(2) # TWO second delay
#led_onboard = machine.Pin(25, machine.Pin.OUT)

delay = 0.05 #set delay

#ledg.value(0) ledg.value(1)
#ledb
#ledw
#ledy
#ledr

#g b w y r y w b -< repeat so therefore next led is back to g

while True:
    ledg.value(1)#on
    utime.sleep(delay)
    ledb.value(1) #on
    utime.sleep(delay)  
    ledg.value(0)#on
    utime.sleep(delay)
    ledw.value(1)
    utime.sleep(delay)
    ledb.value(0)
    utime.sleep(delay)
    ledy.value(1)
    utime.sleep(delay)
    ledw.value(0)
    utime.sleep(delay)
    ledr.value(1)
    utime.sleep(delay)
    ledy.value(0)
    utime.sleep(delay)
    ledr.value(1)
    utime.sleep(delay)
    ledy.value(1)
    utime.sleep(delay)
    ledr.value(0)
    utime.sleep(delay)
    ledw.value(1)
    utime.sleep(delay)
    ledy.value(0)
    utime.sleep(delay)
    ledb.value(1)
    utime.sleep(delay)
    ledw.value(0)
    utime.sleep(delay)  

Tags

#uPython,#RaspberryPiPico,#LarsonScanner,#PhysicalComputing


MastodonPeertubeQoto sign up

Donate using Liberapay