Advertisement
glerium

按键加法器

Oct 16th, 2022
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.74 KB | None | 0 0
  1. from machine import Pin
  2. import time
  3.  
  4. gpio    = [19,5,12,16,23,17,21,22]
  5. numbers = [[1,2,3,5,6,7],[3,7],[2,3,4,5,6],[2,3,4,6,7],[1,3,4,7],[1,2,4,6,7],[1,2,4,5,6,7],[2,3,7],[1,2,3,4,5,6,7],[1,2,3,4,6,7]]
  6. power   = [14,18]
  7. LED = list()
  8. POWER = list()
  9. KEY1 = Pin(35,Pin.IN)
  10. KEY2 = Pin(34,Pin.IN)
  11. KEYB = Pin(0,Pin.IN)
  12.  
  13. def init() -> None:
  14.     for i in gpio: LED.append(Pin(i,Pin.OUT))
  15.     for i in power: POWER.append(Pin(i,Pin.OUT))
  16.     for i in POWER: i.value(1)
  17.     for i in LED: i.value(1)
  18.  
  19. def show(n:int) -> None:
  20.     for i in numbers[n]:
  21.         LED[i-1].value(0)
  22.        
  23. def hide(n:int) -> None:
  24.     for i in numbers[n]:
  25.         LED[i-1].value(1)
  26.  
  27. def show2_core(x:int, y:int, ans:bool) -> None:
  28.     show(x)
  29.     POWER[0].value(1)
  30.     hide(x)
  31.     POWER[0].value(0)
  32.     if ans: LED[7].value(0)
  33.     show(y)
  34.     POWER[1].value(1)
  35.     hide(y)
  36.     POWER[1].value(0)
  37.     if ans: LED[7].value(1)
  38.  
  39. def show2(x:int, y:int) -> None:
  40.     show2_core(x,y,False)
  41.  
  42. def show2_ans(x:int, y:int) -> None:
  43.     show2_core(x,y,True)
  44.    
  45. def read() -> int:
  46.     x,y = 0,0
  47.     show2(x,y)
  48.     done = False
  49.     while done == False:
  50.         show2(x,y)
  51.         if KEY1.value() == 0:
  52.             while KEY1.value() == 0:
  53.                 show2(x,y)
  54.             x=(x+1)%10
  55.         if KEY2.value() == 0:
  56.             while KEY2.value() == 0:
  57.                 show2(x,y)
  58.             y=(y+1)%10
  59.         if KEYB.value() == 0:
  60.             while KEYB.value() == 0:
  61.                 show2(x,y)
  62.             done = True
  63.     return x*10+y
  64.  
  65. init()
  66. while True:
  67.     x,y = read(),read()
  68.     ans = (x+y)%100
  69.     LED[7].value(0)
  70.     while KEYB.value() == 1:
  71.         show2_ans(ans//10,ans%10)
  72.     while KEYB.value() == 0:
  73.         show2_ans(ans//10,ans%10)
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement