raspberry pi - Python Key press and Key Release Listener -
i controlling remote toy auto using python code .as of code below
def getkey(): fd = sys.stdin.fileno() old = termios.tcgetattr(fd) new = termios.tcgetattr(fd) new[3] = new[3] & ~termios.icanon & ~termios.echo new[6][termios.vmin] = 1 new[6][termios.vtime] = 0 termios.tcsetattr(fd, termios.tcsanow, new) c = none try: c = os.read(fd, 1) finally: termios.tcsetattr(fd, termios.tcsaflush, old) homecoming c def car(): while true: key = getkey() if key == 's': #down arrow print "down" backward() elif key == 'w': #up arrow print "up" forward() elif key == 'a': print "left" left() elif key == 'd': print "right" right() elif key == 'q': #quit print "that's it" break def forward(): gpio.output(11,true) #move forwards when press 'w' forward() method called , auto moves forwards wont stop until quit programme or phone call gpio.output(11,flase) other method.
is there key listener detects key release of particular key .
for illustration , if 'w' pressed called method , if released phone call other method
sudo code
if w_ispressed() forward() else if w_isreleased() stop()
i've seen pygame game development library beingness used in similar scenarios before, handling realtime systems , machinery in production, not toy examples. think it's suitable candidate here too. check out pygame.key module possible keyboard input.
in short, if not familiar game development, continuously poll events such input state changes within 'infinite' game loop , react accordingly. update parameters of scheme using deltas per time elapsed. there's plenty of tutorials on , pygame available around , pygame docs pretty solid.
a simple illustration of how go it:
import pygame pygame.init() # spam pygame.keydown event every 100ms while key beingness pressed pygame.key.set_repeat(100, 100) while 1: event in pygame.event.get(): if event.type == pygame.keydown: if event.key == pygame.k_w: print 'go forward' if event.key == pygame.k_s: print 'go backward' if event.type == pygame.keyup: print 'stop' you'll need play pygame.keydown, pygame.keyup , pygame.key.set_repeat depending on how auto motion implemented.
python raspberry-pi gpio
No comments:
Post a Comment