| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import logging
- import RPi.GPIO as GPIO
- import pygame
- logger = logging.getLogger(__name__)
- class GPIOManager():
- def __init__(self, pins):
- GPIO.setmode(GPIO.BCM)
- # Left Button
- GPIO.setup(pins['left'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
- GPIO.add_event_detect(pins['left'], GPIO.BOTH, callback=left,
- bouncetime=30)
- # Right Button
- GPIO.setup(pins['right'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
- GPIO.add_event_detect(pins['right'], GPIO.BOTH,
- callback=right,
- bouncetime=30)
- # Up Button
- GPIO.setup(pins['up'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
- GPIO.add_event_detect(pins['up'], GPIO.BOTH, callback=up,
- bouncetime=30)
- # Down Button
- GPIO.setup(pins['down'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
- GPIO.add_event_detect(pins['down'], GPIO.BOTH, callback=right,
- bouncetime=30)
- # Enter Button
- GPIO.setup(pins['enter'], GPIO.IN, pull_up_down=GPIO.PUD_UP)
- GPIO.add_event_detect(pins['enter'], GPIO.BOTH,
- callback=right,
- bouncetime=30)
- def right(channel):
- dict = {}
- if GPIO.input(channel) == 1:
- type = pygame.KEYUP
- else:
- type = pygame.KEYDOWN
- dict['key'] = pygame.K_RIGHT
- event = pygame.event.Event(type, dict)
- event.unicode = None
- pygame.event.post(event)
- def left(channel):
- dict = {}
- if GPIO.input(channel) == 1:
- type = pygame.KEYUP
- else:
- type = pygame.KEYDOWN
- dict['key'] = pygame.K_RIGHT
- event = pygame.event.Event(type, dict)
- event.unicode = None
- pygame.event.post(event)
- def down(channel):
- dict = {}
- if GPIO.input(channel) == 1:
- type = pygame.KEYUP
- else:
- type = pygame.KEYDOWN
- dict['key'] = pygame.K_DOWN
- event = pygame.event.Event(type, dict)
- event.unicode = None
- pygame.event.post(event)
- def up(channel):
- dict = {}
- if GPIO.input(channel) == 1:
- type = pygame.KEYUP
- else:
- type = pygame.KEYDOWN
- dict['key'] = pygame.K_UP
- event = pygame.event.Event(type, dict)
- event.unicode = None
- pygame.event.post(event)
- def enter(channel):
- dict = {}
- if GPIO.input(channel) == 1:
- type = pygame.KEYUP
- else:
- type = pygame.KEYDOWN
- dict['key'] = pygame.K_RETURN
- event = pygame.event.Event(type, dict)
- event.unicode = None
- pygame.event.post(event)
|