gpio_inpput_manager.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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,
  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['key'] = pygame.K_RIGHT
  37. event = pygame.event.Event(type, dict)
  38. pygame.event.post(event)
  39. def left(channel):
  40. dict = {}
  41. if GPIO.input(channel) == 1:
  42. type = pygame.KEYUP
  43. else:
  44. type = pygame.KEYDOWN
  45. dict['key'] = pygame.K_RIGHT
  46. event = pygame.event.Event(type, dict)
  47. pygame.event.post(event)
  48. def down(channel):
  49. dict = {}
  50. if GPIO.input(channel) == 1:
  51. type = pygame.KEYUP
  52. else:
  53. type = pygame.KEYDOWN
  54. dict['key'] = pygame.K_DOWN
  55. event = pygame.event.Event(type, dict)
  56. pygame.event.post(event)
  57. def up(channel):
  58. dict = {}
  59. if GPIO.input(channel) == 1:
  60. type = pygame.KEYUP
  61. else:
  62. type = pygame.KEYDOWN
  63. dict['key'] = pygame.K_UP
  64. event = pygame.event.Event(type, dict)
  65. pygame.event.post(event)
  66. def enter(channel):
  67. dict = {}
  68. if GPIO.input(channel) == 1:
  69. type = pygame.KEYUP
  70. else:
  71. type = pygame.KEYDOWN
  72. dict['key'] = pygame.K_RETURN
  73. event = pygame.event.Event(type, dict)
  74. pygame.event.post(event)