from machine import Pin, ADC, PWM
import time
pot = ADC(26)
led = Pin(15, Pin.OUT)
buzzer = PWM(Pin(16))
buzzer.duty_u16(0)
segments = [
Pin(2, Pin.OUT), # A
Pin(3, Pin.OUT), # B
Pin(4, Pin.OUT), # C
Pin(5, Pin.OUT), # D
Pin(6, Pin.OUT), # E
Pin(7, Pin.OUT), # F
Pin(8, Pin.OUT) # G
]
# COMMON ANODE (0 = ON, 1 = OFF)
digits = {
0: [0,0,0,0,0,0,1],
1: [1,0,0,1,1,1,1],
2: [0,0,1,0,0,1,0],
3: [0,0,0,0,1,1,0],
4: [1,0,0,1,1,0,0],
5: [0,1,0,0,1,0,0],
6: [0,1,0,0,0,0,0],
7: [0,0,0,1,1,1,1],
8: [0,0,0,0,0,0,0],
9: [0,0,0,0,1,0,0]
}
def buzzer_on():
buzzer.freq(1000)
buzzer.duty_u16(30000)
def buzzer_off():
buzzer.duty_u16(0)
while True:
level = int((pot.read_u16() / 65535) * 9)
for pin, val in zip(segments, digits[level]):
pin.value(val)
if level <= 2:
led.value(0)
buzzer_on()
else:
led.value(1)
buzzer_off()
time.sleep(0.2)