gpio_inpput_manager.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import logging
  2. import RPi.GPIO as GPIO
  3. import pygame
  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,
  15. callback=right,
  16. bouncetime=30)
  17. # Up Button
  18. GPIO.setup(pins['up'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  19. GPIO.add_event_detect(pins['up'], GPIO.BOTH, callback=up,
  20. bouncetime=30)
  21. # Down Button
  22. GPIO.setup(pins['down'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  23. GPIO.add_event_detect(pins['down'], GPIO.BOTH, callback=right,
  24. bouncetime=30)
  25. # Enter Button
  26. GPIO.setup(pins['enter'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
  27. GPIO.add_event_detect(pins['enter'], GPIO.BOTH,
  28. callback=right,
  29. bouncetime=30)
  30. def right(channel):
  31. dict = {}
  32. if GPIO.input(channel) == 1:
  33. type = pygame.KEYUP
  34. else:
  35. type = pygame.KEYDOWN
  36. dict['unicode'] = None
  37. dict['key'] = pygame.K_RIGHT
  38. event = pygame.event.Event(type, dict)
  39. pygame.event.post(event)
  40. def left(channel):
  41. dict = {}
  42. if GPIO.input(channel) == 1:
  43. type = pygame.KEYUP
  44. else:
  45. type = pygame.KEYDOWN
  46. dict['unicode'] = None
  47. dict['key'] = pygame.K_RIGHT
  48. event = pygame.event.Event(type, dict)
  49. pygame.event.post(event)
  50. def down(channel):
  51. dict = {}
  52. if GPIO.input(channel) == 1:
  53. type = pygame.KEYUP
  54. else:
  55. type = pygame.KEYDOWN
  56. dict['unicode'] = None
  57. dict['key'] = pygame.K_DOWN
  58. event = pygame.event.Event(type, dict)
  59. pygame.event.post(event)
  60. def up(channel):
  61. dict = {}
  62. if GPIO.input(channel) == 1:
  63. type = pygame.KEYUP
  64. else:
  65. type = pygame.KEYDOWN
  66. dict['unicode'] = None
  67. dict['key'] = pygame.K_UP
  68. event = pygame.event.Event(type, dict)
  69. pygame.event.post(event)
  70. def enter(channel):
  71. dict = {}
  72. if GPIO.input(channel) == 1:
  73. type = pygame.KEYUP
  74. else:
  75. type = pygame.KEYDOWN
  76. dict['unicode'] = None
  77. dict['key'] = pygame.K_RETURN
  78. event = pygame.event.Event(type, dict)
  79. pygame.event.post(event)