S&B Volcano vaporizer remote control with Pi Pico W
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

states.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env python
  2. import uasyncio as asyncio
  3. from lcd import LCD
  4. from state_scan import StateScan
  5. from state_connect import StateConnect
  6. from state_select import StateSelect
  7. from state_heat import StateHeat
  8. from state_wait_temp import StateWaitTemp
  9. from state_wait_time import StateWaitTime
  10. from state_pump import StatePump
  11. class States:
  12. def __init__(self):
  13. self.states = []
  14. self.current = None
  15. def add(self, s):
  16. self.states.append(s)
  17. def run(self):
  18. if self.current == None:
  19. self.current = 0
  20. self.states[self.current].enter()
  21. next = asyncio.run(self.states[self.current].draw())
  22. if next >= 0:
  23. print("switch to {}".format(next))
  24. val = self.states[self.current].exit()
  25. self.current = next
  26. self.states[self.current].enter(val)
  27. if True:#__name__ == "__main__":
  28. lcd = LCD()
  29. lcd.brightness(1.0)
  30. states = States()
  31. # 0 - Scan
  32. scan = StateScan(lcd)
  33. states.add(scan)
  34. # 1 - Connect
  35. conn = StateConnect(lcd, True)
  36. states.add(conn)
  37. # 2 - Select
  38. select = StateSelect(lcd)
  39. states.add(select)
  40. # 3 - Heater On
  41. heatOn = StateHeat(lcd, True)
  42. states.add(heatOn)
  43. # 4 - Heater Off
  44. heatOff = StateHeat(lcd, False)
  45. states.add(heatOff)
  46. # 5 - Disconnect
  47. disconn = StateConnect(lcd, False)
  48. states.add(disconn)
  49. # 6 - Wait for temperature
  50. waitTemp = StateWaitTemp(lcd)
  51. states.add(waitTemp)
  52. # 7 - Wait for time
  53. waitTime = StateWaitTime(lcd)
  54. states.add(waitTime)
  55. # 8 - Pump
  56. pump = StatePump(lcd)
  57. states.add(pump)
  58. while True:
  59. states.run()