# Turning on/off parking sensor automatically with Raspberry Pi Pico

**URL:** <https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672>\
**Category:** Uncategorized\
**Created:** [13 July 2021 10:35 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672 "2021-07-13T10:35:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jaden130809](https://avatars.discourse-cdn.com/v4/letter/j/5fc32e/32.png) [@Jaden130809](https://forum.core-electronics.com.au/u/Jaden130809)\
**Post date:** [13 July 2021 10:35 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/1 "2021-07-13T10:35:20Z")

</div>

Hello All,

I have created a parking sensor that will be attached to the wall of my garage. It uses a Raspberry Pi Pico to control everything, a GlowBit rainbow to give visual feedback, and a PiicoDev VL53L1X distance sensor.

I am trying to write some code to make it turn off the GlowBit when it is no longer needed (once the car has parked) and turn back on when a car starts driving into the garage. I am trying to do this just by code to avoid using a micro switch to check whether the roller door is up or down. I was thinking of taking 2 distance measurements and then checking to see if they are within a couple of mm to turn the GlowBit off and a similar system to turn it back on. Any help with how it would be possible to do so with code would be greatly appreciated.

The end result of the code would just manipulate x, x = 1 when the GlowBit should be on and x = 0 when the Glowbit should be off.

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![Liam](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/liam/32/3562_2.png) [@Liam](https://forum.core-electronics.com.au/u/Liam)\
**Post date:** [14 July 2021 01:33 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/2 "2021-07-14T01:33:43Z")

</div>

Hey Jaden,

Sounds awesome, also you juust missed DIYODE’s GlowBit giveaway.

Setting the whole strip to BLACK (0,0,0) would turn all of the LED’s off but the control chips (WS2812b-v5) will still use a small amount of current - I had a look and its around 1mA per LED.

Do you have some code or another way to visualize the logic of your project? I find a flowchart helpful then translating the code across.

> **Some guides to get started**
>
> [How to use WS2812B RGB LEDs with Raspberry Pi Pico](https://core-electronics.com.au/tutorials/how-to-use-ws2812b-rgb-leds-with-raspberry-pi-pico.html)  
> [How to Setup and Code on a Raspberry Pi Pico Using Thonny](https://core-electronics.com.au/videos/how-to-setup-and-code-on-a-raspberry-pi-pico-using-thonny)  
> [PiicoDev Distance Sensor VL53L1X - Raspberry Pi Pico Guide](https://core-electronics.com.au/tutorials/piicodev-distance-sensor-vl53l1x-raspberry-pi-pico-guide.html)

Liam.

---

<div class="post-metadata">

**Author:** ![Jaden130809](https://avatars.discourse-cdn.com/v4/letter/j/5fc32e/32.png) [@Jaden130809](https://forum.core-electronics.com.au/u/Jaden130809)\
**Post date:** [14 July 2021 10:30 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/3 "2021-07-14T10:30:14Z")

</div>

Hello Liam,

Thanks for your reply. I have got the Glowbit code sorted. Here is the code if that helps.  
Alternatively I could just make the Glowbit turn on and off in a certain distance range but I would rather take 2 distance readings about a minute apart and see if they have changed. Is there an easy way of doing this? As you can see from the code, all I have to do is change the value of stat, to turn on and off the Glowbit. Thanks.

```auto
import array, time
from time import sleep
import rp2
from PiicoDev_VL53L1X import PiicoDev_VL53L1X
from time import sleep
distSensor = PiicoDev_VL53L1X() 

BLACK = (0, 0, 0)
RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

COLORS = (BLACK, RED, YELLOW, GREEN, BLUE)

NUM_LEDS = 13
PIN_NUM = 22
brightness = 0.2

@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)

def ws2812():

    T1 = 2

    T2 = 5

    T3 = 3

    wrap_target()

    label("bitloop")

    out(x, 1) .side(0) [T3 - 1]

    jmp(not_x, "do_zero") .side(1) [T1 - 1]

    jmp("bitloop") .side(1) [T2 - 1]

    label("do_zero")

    nop() .side(0) [T2 - 1]

    wrap()

 

sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(PIN_NUM))

 

 

sm.active(1)

 

ar = array.array("I", [0 for _ in range(NUM_LEDS)])

 

def pixels_show():

    dimmer_ar = array.array("I", [0 for _ in range(NUM_LEDS)])
    for i,c in enumerate(ar):

        r = int(((c >> 8) & 0xFF) * brightness)

        g = int(((c >> 16) & 0xFF) * brightness)

        b = int((c & 0xFF) * brightness)

        dimmer_ar[i] = (g<<16) + (r<<8) + b

    sm.put(dimmer_ar, 8)

    time.sleep_ms(10)

 

def pixels_set(i, color):
    ar[i] = (color[1]<<16) + (color[0]<<8) + color[2] 

def pixels_fill(color):
    for i in range(len(ar)):
        pixels_set(i, color)

       

def convert(x, i_m, i_M, o_m, o_M):
    return max(min(o_M, (x - i_m) * (o_M - o_m) // (i_M - i_m) + o_m), o_m) 

def display():

    dist = int(str(distSensor.read()))
    nol = convert(dist, 500, 2000, 1, 13)

    for i in range(0, 13):
        if i < nol:
            pixels_set(i, BLUE)    
        else:
            pixels_set(i, BLACK)

          
    if dist <= 500:
        pixels_fill(GREEN)

    if dist <= 400:
        pixels_fill(YELLOW)
   
    if dist <= 300:
        pixels_fill(RED)           

    pixels_show()
 
    sleep(0.05)

stat = 1

while True:

    if stat:
        display()
    else:
        pixels_fill(BLACK)
        pixels_show() 

```

---

<div class="post-metadata">

**Author:** ![Jaden130809](https://avatars.discourse-cdn.com/v4/letter/j/5fc32e/32.png) [@Jaden130809](https://forum.core-electronics.com.au/u/Jaden130809)\
**Post date:** [14 July 2021 11:40 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/4 "2021-07-14T11:40:04Z")

</div>

Hello Liam,

Sorry for starting a useless topic. 🙄  
I have just realized that what I suggested about turning it on and off in a certain distance range would be just as good as the other option. Thanks for your support anyway.

---

<div class="post-metadata">

**Author:** ![Liam120347](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/liam120347/32/5003_2.png) [@Liam120347](https://forum.core-electronics.com.au/u/Liam120347)\
**Post date:** [14 July 2021 12:46 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/5 "2021-07-14T12:46:41Z")

</div>

Hey Jaden,

There is never a useless topic!! It doesn’t hurt asking for some help sometimes 😃  
They are both excellent ideas, maybe a combination of the two would be the best, in my opinion using the change in distance will probably save power in the long run.

---

<div class="post-metadata">

**Author:** ![jacky172662](https://avatars.discourse-cdn.com/v4/letter/j/ecb155/32.png) [@jacky172662](https://forum.core-electronics.com.au/u/jacky172662)\
**Post date:** [10 August 2021 12:00 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/6 "2021-08-10T12:00:52Z")

</div>

thanks for the awesome information.

---

<div class="post-metadata">

**Author:** ![jacky172662](https://avatars.discourse-cdn.com/v4/letter/j/ecb155/32.png) [@jacky172662](https://forum.core-electronics.com.au/u/jacky172662)\
**Post date:** [6 February 2022 11:04 UTC](https://forum.core-electronics.com.au/t/turning-on-off-parking-sensor-automatically-with-raspberry-pi-pico/10672/7 "2022-02-06T11:04:02Z")

</div>

> [@Liam120347](#):
>
> Hey Jaden,
> 
> There is never a useless topic!! It doesn’t hurt asking for some help sometimes 😃  
> They are both excellent ideas, maybe a combination of the two would be the best, in my opinion using the change in distance will probably save power in the long run. [https://krogerfeedback.nl](https://krogerfeedback.nl) [https://talktosonic.onl](https://talktosonic.onl) [https://talktowendys.vip](https://talktowendys.vip) [https://whataburgersurvey.onl](https://whataburgersurvey.onl)

thanks my issue has been fixed.
