Как выполнить действие в слушателе клавиатуры pynput с модулем таймера - PullRequest
0 голосов
/ 02 апреля 2020

Я делаю r c машину с Rasberry Pi 4 и python, но для левой и правой я хочу увеличить угол серводвигателя со временем, поэтому в основном я хочу сделать это как псевдо:

normalangle = 90
if left button pressed:
   if timepassed < 25:
      car.turnleft(normalangle + timepassed)

и это мой код

import carcontrol
from SensorClass import distanceSensor
import RPi.GPIO as GPIO          
import time
from pynput.keyboard import Key,Listener

sensor1 = distanceSensor(6,5)
carcontrol.setpstart(30)
carcontrol.servo(90)

def on_press(key):
    distance = sensor1.startCalculate()
    if key == Key.up:
        if(distance > 20):
            carcontrol.forward()
        elif (distance < 30 and distance > 20):
            print("something is coming")
        else :
            carcontrol.stop()
            print("you cannot move forward")
    if key == Key.left:
        carcontrol.servo(160)
    if key == Key.down:
        carcontrol.reverse()
    if key == Key.right:
        carcontrol.servo(20)

def on_release(key):
    if key == Key.up:
        carcontrol.stop()
    if key == Key.left:
        carcontrol.servo(90)
    if key == Key.down:
        carcontrol.stop()
    if key == Key.right:
        carcontrol.servo(90)

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()


Также я хочу проверить каждый второй датчик расстояния. я добавил как код в разделе on_press. но это просто работает, когда я впервые нажал. если я держу его, это не проверка. так как я могу проверять каждую секунду?

...