S&B Volcano vaporizer remote control with Pi Pico W
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. from state_notify import StateNotify
  12. class States:
  13. def __init__(self, lcd):
  14. self.lcd = lcd
  15. self.states = []
  16. self.current = None
  17. def add(self, s):
  18. self.states.append(s)
  19. async def draw(self):
  20. self.lcd.fill(self.lcd.black)
  21. self.lcd.text("Volcano Remote Control App", 0, 0, self.lcd.green)
  22. r = await self.states[self.current].draw()
  23. self.lcd.show()
  24. return r
  25. def run(self):
  26. if self.current == None:
  27. self.current = 0
  28. self.states[self.current].enter()
  29. next = asyncio.run(self.draw())
  30. if next >= 0:
  31. val = self.states[self.current].exit()
  32. self.current = next
  33. self.states[self.current].enter(val)
  34. if True:#__name__ == "__main__":
  35. lcd = LCD()
  36. lcd.brightness(1.0)
  37. states = States(lcd)
  38. # 0 - Scan
  39. scan = StateScan(lcd)
  40. states.add(scan)
  41. # 1 - Connect
  42. conn = StateConnect(lcd, True)
  43. states.add(conn)
  44. # 2 - Select
  45. select = StateSelect(lcd)
  46. states.add(select)
  47. # 3 - Heater On
  48. heatOn = StateHeat(lcd, True)
  49. states.add(heatOn)
  50. # 4 - Heater Off
  51. heatOff = StateHeat(lcd, False)
  52. states.add(heatOff)
  53. # 5 - Disconnect
  54. disconn = StateConnect(lcd, False)
  55. states.add(disconn)
  56. # 6 - Wait for temperature
  57. waitTemp = StateWaitTemp(lcd)
  58. states.add(waitTemp)
  59. # 7 - Wait for time
  60. waitTime = StateWaitTime(lcd)
  61. states.add(waitTime)
  62. # 8 - Pump
  63. pump = StatePump(lcd)
  64. states.add(pump)
  65. # 9 - Notify
  66. notify = StateNotify(lcd)
  67. states.add(notify)
  68. while True:
  69. states.run()