gpio_inpput_manager.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import logging
  2. import pygame
  3. import RPi.GPIO as GPIO
  4. logger = logging.getLogger(__name__)
  5. class GPIOManager():
  6. def __init__(self, pins):
  7. GPIO.setmode(GPIO.BCM)
  8. # Left Button
  9. GPIO.setup(pins['left'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  10. GPIO.add_event_detect(pins['left'], GPIO.BOTH, callback=left,
  11. bouncetime=30)
  12. # Right Button
  13. GPIO.setup(pins['right'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  14. GPIO.add_event_detect(pins['right'], GPIO.BOTH, callback=right,
  15. bouncetime=30)
  16. # Up Button
  17. GPIO.setup(pins['up'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  18. GPIO.add_event_detect(pins['up'], GPIO.BOTH, callback=up,
  19. bouncetime=30)
  20. # Down Button
  21. GPIO.setup(pins['down'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  22. GPIO.add_event_detect(pins['down'], GPIO.BOTH, callback=right,
  23. bouncetime=30)
  24. # Enter Button
  25. GPIO.setup(pins['enter'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  26. GPIO.add_event_detect(pins['enter'], GPIO.BOTH, callback=right,
  27. bouncetime=30)
  28. def right(channel):
  29. dict = {}
  30. if GPIO.input(channel) == 1:
  31. type = pygame.KEYUP
  32. else:
  33. type = pygame.KEYDOWN
  34. dict['key'] = pygame.K_RIGHT
  35. event = pygame.event.Event(type, dict)
  36. pygame.event.post(event)
  37. def left(channel):
  38. dict = {}
  39. if GPIO.input(channel) == 1:
  40. type = pygame.KEYUP
  41. else:
  42. type = pygame.KEYDOWN
  43. dict['key'] = pygame.K_RIGHT
  44. event = pygame.event.Event(type, dict)
  45. pygame.event.post(event)
  46. def down(channel):
  47. dict = {}
  48. if GPIO.input(channel) == 1:
  49. type = pygame.KEYUP
  50. else:
  51. type = pygame.KEYDOWN
  52. dict['key'] = pygame.K_DOWN
  53. event = pygame.event.Event(type, dict)
  54. pygame.event.post(event)
  55. def up(channel):
  56. dict = {}
  57. if GPIO.input(channel) == 1:
  58. type = pygame.KEYUP
  59. else:
  60. type = pygame.KEYDOWN
  61. dict['key'] = pygame.K_UP
  62. event = pygame.event.Event(type, dict)
  63. pygame.event.post(event)
  64. def enter(channel):
  65. dict = {}
  66. if GPIO.input(channel) == 1:
  67. type = pygame.KEYUP
  68. else:
  69. type = pygame.KEYDOWN
  70. dict['key'] = pygame.K_RETURN
  71. event = pygame.event.Event(type, dict)
  72. pygame.event.post(event)