#Imports
from machine import Pin, ADC, Timer, PWM
import utime
from math import log
import time
print_loop = 0
# Pin and constant definitions
DIG_1 = 11
DOT_PIN = 7
pwm = PWM(Pin(15))
pwm.freq(1000)
potentiometer = ADC(Pin(26))
voltage = 0
# HEX values for 7 segment display values
displayCodes = [
0xC0,
0xF9,
0xA4,
0xB0,
0x99,
0x92,
0x82,
0xF8,
0x80,
0x90
]
display_value = 0
# Function definitions
def scan_display():
temp_display_value = display_value
for i in range(3, -1, -1):
display_digit(int(temp_display_value%10), i, i==0)
utime.sleep(0.01)
Pin(DIG_1 - i, Pin.OUT).off()
Pin(DOT_PIN, Pin.OUT).value(1)
temp_display_value /= 10
def display_digit(digit_value, digit_index, dp_enable=False):
for i in range(7):
Pin(i, Pin.OUT).value((1<<i) & displayCodes[digit_value])
Pin(DIG_1 - digit_index, Pin.OUT).on()
if dp_enable:
Pin(DOT_PIN, Pin.OUT).value(0)
def read_value(new):
global display_value ,voltage , print_loop
reading = potentiometer.read_u16()
voltage = int((reading / 65535) * 3300)
if print_loop != voltage:
print(f"Voltage = {voltage} mV")
pwm.duty_u16(reading)
print_loop = voltage
display_value = voltage
def main():
while True:
scan_display()
read_value(10)
if __name__ == '__main__':
main()
'''
def read_value(new):
global display_value ,voltage
display_value += new
if display_value == 200:
display_value = 0
t_end = time.time() + 1
while time.time() < t_end:
'''