from machine import Pin, PWM
import utime
import ssd1306
from machine import I2C
import dht
i2c = I2C(0, scl=Pin(21), sda=Pin(20)) #inisiasi pin OLED
oled = ssd1306.SSD1306_I2C(128, 64, i2c, 0x3c)
back_button=Pin(0, Pin.IN, Pin.PULL_DOWN) #inisiasi pin back button
enter_button=Pin(1, Pin.IN, Pin.PULL_DOWN) #inisiasi pin enter button
next_button=Pin(2, Pin.IN, Pin.PULL_DOWN) #inisiasi pin next button
led=Pin(5, Pin.OUT) #inisiasi pin led
pindht=Pin(27, Pin.IN) #inisiasi pin dht
d=dht.DHT22(pindht)
kipas =Pin(19, Pin.OUT)
pwm = PWM(kipas)
#deklarasi variabel
count=1
l=0
pwm.freq(1000)
def suhu():
global count
print("Temperatur ", t, "C") #menampilkan temperatur pada serial monitor
oled.fill(0)
oled.text("Temperatur",25,0)
oled.text(str(t),45,10)
oled.text("C",78,10)
oled.text("<<Lamp",0,48)
oled.text("Hum>>",90,48)
oled.show()
if back_button.value():
count=count+2
elif next_button.value():
count=count+1
def kelembaban():
global count
print("Humidity ", h, "%") #menampilkan humidity pada serial monitor
oled.fill(0)
oled.text("Humidity",35,0)
oled.text(str(h),45,10)
oled.text("%",78,10)
oled.text("<<Temp",0,48)
oled.text("Lamp>>",80,48)
oled.show()
if back_button.value():
count=count-1
elif next_button.value():
count=count+1
def lampu():
global count
global l
if l == 0:
k="OFF"
elif l==1:
k="ON"
print("Lamp ",k) #menampilkan kondisi lampu pada serial monitor
oled.fill(0)
oled.text("Lamp",48,0)
oled.text(str(k),52,10)
oled.text("<<Hum",0,48)
oled.text("Temp>>",80,48)
oled.show()
if back_button.value():
count=count-1
elif next_button.value():
count=count-2
elif enter_button.value():
led.toggle()
l=not l
while True:
d.measure() #pengukuran suhu dan kelembaban
t=d.temperature() #pembacaan suhu
h=d.humidity() #pembacaan kelembaban
if count == 1:
suhu()
elif count == 2:
kelembaban()
elif count== 3:
lampu()
if t >= 25 and t <= 30:
duty = 200
pwm.duty_u16(duty * duty)
if t < 25 :
suhu()
duty = 50
pwm.duty_u16(duty * duty)
elif t>30:
suhu()
duty = 255
pwm.duty_u16(duty * duty)
elif h >= 50 and h <= 70:
duty = 200
pwm.duty_u16(duty * duty)
elif h < 50 :
kelembaban()
duty = 50
pwm.duty_u16(duty * duty)
elif h > 70 :
kelembaban()
duty = 255
pwm.duty_u16(duty * duty)
if led.value():
l=1