import machine
import time
import ssd1306
# Pin Definitions
SDA_PIN = 2 # Pin GP2 for SDA
SCL_PIN = 3 # Pin GP3 for SCL
TRIGGER_PINS = [6, 13, 2] # Replace with your trigger pin numbers
ECHO_PINS = [7, 12, 3] # Replace with your echo pin numbers
# Screen Configuration
SCREEN_WIDTH = 128
SCREEN_HEIGHT = 64
# Create an I2C interface
i2c = machine.I2C(0, sda=machine.Pin(SDA_PIN), scl=machine.Pin(SCL_PIN))
# Initialize the SSD1306 display
oled = ssd1306.SSD1306_I2C(SCREEN_WIDTH, SCREEN_HEIGHT, i2c)
def read_distance(trigger_pin, echo_pin):
# Send the trigger pulse
machine.Pin(trigger_pin, mode=machine.Pin.OUT, value=0)
time.sleep_us(2)
machine.Pin(trigger_pin, mode=machine.Pin.OUT, value=1)
time.sleep_us(5)
machine.Pin(trigger_pin, mode=machine.Pin.OUT, value=0)
# Measure the echo pulse
pulse_time = machine.time_pulse_us(machine.Pin(echo_pin), 1, 30000)
distance = pulse_time / 58 # Convert to centimeters
return distance
while True:
distances = []
for trigger_pin, echo_pin in zip(TRIGGER_PINS, ECHO_PINS):
distance = read_distance(trigger_pin, echo_pin)
distances.append(distance)
oled.fill(0) # Clear the display
for i, distance in enumerate(distances):
oled.text("Sensor {}:".format(i + 1), 0, i * 16)
oled.text("Distance: {} cm".format(distance), 0, i * 16 + 8)
oled.show() # Update the display
time.sleep(1) # Delay for 1 second before taking another measurement