from machine import Pin , PWM
import time
segments = [
Pin(0 , Pin.OUT) , #A
Pin(1 , Pin.OUT) , #B
Pin(2 , Pin.OUT) , #C
Pin(3 , Pin.OUT) , #D
Pin(4 , Pin.OUT) , #E
Pin(5 , Pin.OUT) , #F
Pin(6 , Pin.OUT) , ]
numbers = [
#a b. c d e f g
[1, 1, 1, 1, 1, 1, 0], # 0
[0, 1, 1, 0, 0, 0, 0], # 1 ()
[1, 1, 0, 1, 1, 0, 1], # 2
[1, 1, 1, 1, 0, 0, 1], # 3
[0, 1, 1, 0, 0, 1, 1], # 4
[1, 0, 1, 1, 0, 1, 1], # 5
[1, 0, 1, 1, 1, 1, 1], # 6
[1, 1, 1, 0, 0, 0, 0], # 7
[1, 1, 1, 1, 1, 1, 1], # 8
[1, 1, 1, 1, 0, 1, 1] , # 9
[0 ,0 ,0 ,0, 0, 0, 0] ]
up = Pin(7 , Pin.IN)
down = Pin(8 , Pin.IN)
servo = PWM(Pin(11 , Pin.OUT) , freq = 50 )
def map(value, in_min, in_max, out_min, out_max):
value = max(in_min, min(in_max, value))
return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
def rotate(angle):
ang = int(map(angle , 0 , 180 , 1500 , 8000))
servo.duty_u16(ang)
def clear () :
for i in range (7):
segments[i].off()
def display (n):
digit = numbers[n]
for i in range(7) :
segments[i].value(digit[i])
angle = 0
display(0)
while 1 :
if up.value() and angle < 90 :
time.sleep_ms(300)
angle = angle + 10
print(angle)
if down.value() and angle > 0 :
time.sleep_ms(300)
angle = angle - 10
print(angle)
if angle != 0 :
display((angle//10))
time.sleep_ms(30)
rotate(angle)