from machine import Pin, I2C, ADC
import ssd1306
import time
# ---------- OLED SETUP ----------
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# ---------- POTENTIOMETER ----------
pot = ADC(Pin(2))
pot.atten(ADC.ATTN_11DB) # Full range: 0–4095
# ---------- LEDS ----------
led1 = Pin(5, Pin.OUT)
led2 = Pin(18, Pin.OUT)
led3 = Pin(19, Pin.OUT)
# ---------- BUZZER ----------
buzzer = Pin(15, Pin.OUT)
# Make sure everything starts OFF
led1.off()
led2.off()
led3.off()
buzzer.off()
while True:
pot_value = pot.read() # 0–4095
percent = int((pot_value / 4095) * 100)
# Clear display
oled.fill(0)
oled.text("Pot Value:", 0, 0)
oled.text(str(pot_value), 0, 10)
oled.text("Level:", 0, 25)
oled.text(str(percent) + "%", 0, 35)
# Turn all LEDs OFF first (reset state)
led1.off()
led2.off()
led3.off()
buzzer.off()
# LOW LEVEL (1–30%)
if 1 <= percent <= 30:
oled.text("LOW LEVEL", 0, 50)
led1.on()
# MEDIUM LEVEL (31–70%)
elif 31 <= percent <= 70:
oled.text("MEDIUM LEVEL", 0, 50)
led1.on()
led2.on()
# HIGH LEVEL (71–100%)
elif 71 <= percent <= 100:
oled.text("HIGH LEVEL!", 0, 50)
led1.on()
led2.on()
led3.on()
buzzer.on()
else:
oled.text("0% - ALL OFF", 0, 50)
oled.show()
time.sleep(0.2)