import network
import urequests
from machine import Pin, I2C
from time import sleep
import ssd1306
# --- Setup WiFi ---
ssid = "Boash Vokasi"
password = "PASSWORD_WIFI"
led_merah = Pin(15, Pin.OUT)
led_kuning = Pin(4, Pin.OUT)
led_hijau = Pin(2, Pin.OUT)
# --- Setup OLED ---
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
def connect_wifi():
led_merah.on()
oled.fill(0)
oled.text("Menghubungkan WiFi", 0, 0)
oled.show()
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
retry = 0
while not wlan.isconnected() and retry < 10:
sleep(1)
retry += 1
if wlan.isconnected():
led_merah.off()
return True
else:
oled.fill(0)
oled.text("Gagal WiFi!", 0, 0)
oled.show()
blink_error()
return False
def blink_error():
for _ in range(10):
led_merah.on()
sleep(0.1)
led_merah.off()
sleep(0.1)
def get_joke():
led_kuning.on()
oled.fill(0)
oled.text("Mengambil joke...", 0, 0)
oled.show()
try:
res = urequests.get("https://v2.jokeapi.dev/joke/Programming")
data = res.json()
res.close()
oled.fill(0)
if data["type"] == "single":
oled.text("Programming Joke:", 0, 0)
oled.text(data["joke"][:20], 0, 16)
oled.text(data["joke"][20:40], 0, 32)
else:
oled.text("Setup:", 0, 0)
oled.text(data["setup"][:20], 0, 16)
oled.text("Delivery:", 0, 32)
oled.text(data["delivery"][:20], 0, 48)
oled.show()
led_kuning.off()
led_hijau.on()
sleep(2)
led_hijau.off()
except:
oled.fill(0)
oled.text("Gagal ambil joke!", 0, 0)
oled.show()
blink_error()
# --- Main Program ---
if connect_wifi():
while True:
get_joke()
sleep(15)
Loading
ssd1306
ssd1306