import board
import analogio
import digitalio
import time
pot = analogio.AnalogIn(board.GP26)
led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT
N = 16 #CircuitPython rescales the 12-bit ADC to 16-bit
Vmin = 0.0 #Pico ADC minimum
Vmax = 3.3 #Pico ADC reference voltage
sample_timer = time.monotonic()
sample_period = 0.5
#---- (c) convert raw counts -> voltage ----
def countsToVoltage(counts):
return (counts / (2**N - 1)) * (Vmax - Vmin) + Vmin
#---- (d) convert voltage -> percent
def voltageToPercent(voltage):
return (voltage - Vmin) * ((100) / (Vmax - Vmin))
while True:
if time.monotonic() > (sample_timer + sample_period):
sample_timer = time.monotonic()
counts = pot.value
voltage = countsToVoltage(counts)
percent = voltageToPercent(voltage)
# (e) alarm if percent drops below a certain level
alarm = percent < 10
if alarm:
led.value = True
else:
led.value = False
print(counts, voltage, percent) #(a) counts | (c) voltage | (d) percent