from machine import Pin, PWM, SoftI2C
import time
import ssd1306
import dht
# print("Hello, ESP32!")
button = Pin(14, Pin.IN)
frequency = 5000
led = PWM(Pin(12), frequency)
servo = PWM(Pin(13), freq=50)
# humidity_sensor = Pin(26, Pin.IN)
slide_switch = Pin(27, Pin.IN)
isIncrement = True
afterSwitchOn = False
isSet = False
duty_cycle = 1
temp_duty_cycle = 1
buzzer_frequency = 440
first_display = True
d = dht.DHT22(Pin(26))
d.measure()
old_temp = d.temperature()
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text('Welcome', 0, 0)
oled.text('Line 2', 0, 10)
oled.text('Line3', 0, 20)
oled.show()
time.sleep(2)
oled.fill(0)
oled.show()
print("Begin")
while True:
# print(button.value())
# print(slide_switch.value())
d.measure()
# print("Temperature reading: ", d.temperature())
temp_reading = "Temp: " + str(d.temperature()) + "C"
if first_display:
oled.text(temp_reading, 0, 0)
oled.show()
first_display = False
if d.temperature() != old_temp:
oled.fill(0)
oled.show()
oled.text(temp_reading, 0, 0)
oled.show()
old_temp = d.temperature()
if slide_switch.value() == 1:
# set the led to full brightness or on
# we want to keep the original state of the led brightness
if not isSet:
temp_duty_cycle = duty_cycle
isSet = True
duty_cycle = 1022
led.duty(duty_cycle)
afterSwitchOn = True
else:
if afterSwitchOn:
duty_cycle = temp_duty_cycle
led.duty(duty_cycle)
afterSwitchOn = False
isSet = False
# print("here")
# print(temp_duty_cycle)
if button.value() == 1:
# print("Button Pressed")
if isIncrement:
print("Incrementing")
# print(duty_cycle)
led.duty(duty_cycle)
duty_cycle += 1
if duty_cycle > 1022:
isIncrement = False
else:
print("Decrementing")
# print(duty_cycle)
led.duty(duty_cycle)
duty_cycle -= 1
if duty_cycle < 1:
isIncrement = True
time.sleep(0.005)
if d.temperature() >= 40.0:
beeper = PWM(Pin(25), buzzer_frequency)
time.sleep(0.1)
beeper.deinit()
time.sleep(1)
elif d.temperature() >= 35.0:
beeper = PWM(Pin(25), buzzer_frequency)
time.sleep(0.1)
beeper.deinit()
time.sleep(2)
if d.temperature() > 40:
servo.duty_ns(500000)
else:
servo.duty_ns(1480000)
# time.sleep(0.5)
# for duty_cycle in range(0, 1024):
# led.duty(duty_cycle)
# time.sleep(0.005)
# print("Done Increasing")
# for duty_cycle in range(1023, -1, -1):
# led.duty(duty_cycle)
# time.sleep(0.005)
# print("Done Decreasing")