from machine import Pin, SoftI2C, PWM
import ssd1306
import network
import ntptime
import utime
WIFI_SSID = 'Wokwi-GUEST'
WIFI_PASS = ''
a_h = 17
a_m = 31
a_d = 10
timezone = 2
buzzer = PWM(Pin(14))
buzzer.duty(0)
i2c = SoftI2C(sda=Pin(21), scl=Pin(22))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
oled.fill(0)
oled.text('WiFi...', 0, 0)
oled.show()
while not wlan.isconnected():
utime.sleep(0.5)
def sync_time():
oled.fill(0)
oled.text("Sync time...", 0, 0)
oled.show()
ntptime.settime()
def beep(seconds):
end = utime.time() + seconds
while utime.time() < end:
buzzer.freq(2000)
buzzer.duty(512)
utime.sleep(0.2)
buzzer.duty(0)
utime.sleep(0.2)
connect_wifi()
sync_time()
alarm_triggered = False
while True:
t = utime.localtime(utime.time() + timezone * 3600)
h, m, s = t[3], t[4], t[5]
oled.fill(0)
oled.text("CLOCK", 40, 0)
oled.text("{:02d}:{:02d}:{:02d}".format(h, m, s), 25, 25)
oled.text("Alarm {:02d}:{:02d}".format(a_h, a_m), 10, 50)
oled.show()
if h == a_h and m == a_m and not alarm_triggered:
beep(a_d)
alarm_triggered = True
if m != a_m:
alarm_triggered = False
utime.sleep(1)