from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import dht
import time
import utime
#US Pin Declare
trigger = Pin(11, Pin.OUT)
echo = Pin(10, Pin.IN)
#DHT22 Pin
data_pin = Pin(13, Pin.IN, Pin.PULL_UP)
sensor = dht.DHT22(data_pin)
#SSD1306 Display
WIDTH =128
HEIGHT= 64
#Create the I2C connection
i2c=I2C(0,scl=Pin(17),sda=Pin(16),freq=200000)
#Initialize the OLED display
oled = SSD1306_I2C(WIDTH,HEIGHT,i2c)
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
print("The distance from object is ", distance, "cm")
oled.text("{:.2f} cm".format(distance),4,56)
def read_sensor():
try:
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
print_dht22_data(temperature, humidity)
except OSError as e:
print("Error reading data from the sensor")
def print_dht22_data(temperature, humidity):
print("Temperature:{}, Humidity:{}".format(temperature, humidity))
oled.text("Temp.",4,8)
oled.text("Humid.",4,20)
oled.text(str(temperature),65,8)
oled.text(str(humidity),65,20)
while True:
oled.fill(0)
ultra()
utime.sleep(1)
read_sensor()
utime.sleep(1)
oled.show()
time.sleep(2)
Loading
pi-pico-w
pi-pico-w
Loading
ssd1306
ssd1306