Paul Sutton

RaspberryPiPico

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

Pi pico Larson Scanner

I am trying to build a project that simulates a larson scanner (from the original BSG) where the LED light looks like it is is moving back and forth. Granted I am using different colour LEDs here, But I can replace them later. Having different coloured LEDs at this stage, does seem to be helpful.

The issue seems to be with the yellow LED.

So to start off with the video

And the code is as foilows

#flash on board pico led

import machine 
import utime

#delay = input("Time Delay: ")

#bind leds gpip 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(2) # TWO second delay
#led_onboard = machine.Pin(25, machine.Pin.OUT)

delay = 0.1

while True:
    ledg.value(1)#on
    utime.sleep(delay)
    ledr.value(0) #on
    utime.sleep(delay)
    ledb.value(1) #on
    utime.sleep(delay)  
    ledg.value(0)#on
    utime.sleep(delay)  
    ledw.value(1)#off
    utime.sleep(delay)  
    ledb.value(0) #on
    utime.sleep(delay)  
    ledy.value(1)
    utime.sleep(delay)  
    ledw.value(0)#off
    utime.sleep(delay)  
    ledy.value(1) #on
    utime.sleep(delay)  
    ledr.value(1) #on
    utime.sleep(delay)  
    ledy.value(0)
    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)
    ledb.value(1)
    utime.sleep(delay)
    ledg.value(1)
    utime.sleep(delay)
    ledb.value(0)
    utime.sleep(delay)     # one second delay  

I think there is also a more efficient way to do this. I would rather have this solution fixed, than do the same thing with more efficient code.

Tags

#uPython,#RaspberryPiPico,#LarsonScanner,#Physical computing


MastodonPeertubeQoto sign up

Donate using Liberapay