import machine
import dht
import time
from ssd1306 import SSD1306_I2C
# تهيئة المستشعر
sensor = dht.DHT22(machine.Pin(14))
# تهيئة شاشة OLED
i2c = machine.I2C(0, scl=machine.Pin(17), sda=machine.Pin(16))
oled = SSD1306_I2C(128, 64, i2c)
def display_data(temp, humidity):
# مسح الشاشة
oled.fill(0)
# عرض العنوان
oled.text("DHT22 Sensor", 10, 0)
oled.text("----------------", 0, 10)
# عرض درجة الحرارة
oled.text(f"Temp: {temp:.1f}C", 0, 25)
# عرض الرطوبة
oled.text(f"Humidity: {humidity:.1f}%", 0, 40)
# عرض الوقت
oled.text(time.strftime("%H:%M:%S"), 0, 55)
# تحديث الشاشة
oled.show()
# حلقة القراءة الرئيسية
while True:
try:
# قراءة البيانات
sensor.measure()
temp = sensor.temperature()
humidity = sensor.humidity()
# طباعة في الترمينال
print(f"الوقت: {time.strftime('%H:%M:%S')}")
print(f"درجة الحرارة: {temp:.1f}°C")
print(f"الرطوبة: {humidity:.1f}%")
print("-" * 30)
# عرض على شاشة OLED
display_data(temp, humidity)
except OSError as e:
print("خطأ في قراءة المستشعر:", e)
oled.fill(0)
oled.text("Sensor Error!", 10, 30)
oled.show()
# الانتظار 2 ثانية قبل القراءة التالية
time.sleep(2)