Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Nacktnasenwombat
Published

Raspberry Pi Pico Shows Distance on OLED, Toggled by Button

Raspberry Pi Pico measures distance with HC-SR04 and displays on a 0.96 OLED. Measuring can be toggled by a button (interrupt request).

IntermediateProtip1 hour3,148
Raspberry Pi Pico Shows Distance on OLED, Toggled by Button

Things used in this project

Hardware components

Raspberry Pi Pico
Raspberry Pi Pico
×1
OLED Display 128x64 (I2C)
×1
Button with 4 legs
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1

Software apps and online services

ssd1306 micropython driver

Story

Read more

Schematics

Layout

Code

code.py

MicroPython
from machine import Pin, I2C, Timer
from ssd1306 import SSD1306_I2C
import utime


# global toggle button variable
measure_on = False

# debounce for button
def debounce(pin):
    timer.init(mode=Timer.ONE_SHOT, period=200, callback=on_pressed)

# if button pressed, toggle measure_on
def on_pressed(timer):
    global measure_on
    measure_on = not measure_on

# Init button
button = Pin(16, Pin.IN, Pin.PULL_DOWN)
timer = Timer()
button.irq(debounce, Pin.IRQ_RISING)

# Init Display
i2c = I2C(0,sda=Pin(0),scl=Pin(1),freq=40000)
oled = SSD1306_I2C(128,64,i2c)

# Init HC-SR04 pins
trigger = Pin(14, Pin.OUT)
echo = Pin(13, Pin.IN)


def ultra():
    trigger.low()
    utime.sleep_us(2)
    trigger.high()
    utime.sleep_us(5)
    trigger.low()
    while echo.value() == 0:
        signaloff = utime.ticks_us()
    while echo.value() == 1:
        signalon = utime.ticks_us()
    timepassed = signalon - signaloff
    distance = (timepassed * 0.0343) / 2
    return distance

try:
    while True:
        oled.fill(0)
        if measure_on:
            result = ultra()
            oled.text("Distance:",0,0)
            oled.text(str(result) + " cm",0,10)
        oled.show()
        utime.sleep(1)            
except KeyboardInterrupt:
    pass

Credits

Nacktnasenwombat
3 projects • 4 followers
Contact

Comments

Please log in or sign up to comment.