Profilo di 19marinho

Nome 19marinho
Indirizzo email n/a
Messaggi1
  • fermare robot al rilascio dei tasti direzionali
    Forum >> Principianti
    Salve a tutti, ho necessità di comandare un robot con i tasti direzionali del computer, ho scritto il codice che allego ma avrei bisogno che al rilascio del tasto direzionale i motori si fermino.
    Ringrazio anticipatamente chiunque riesca a darmi una mano.

    Grazie





    # import librerie curses e GPIO

    import curses

    import RPi.GPIO as GPIO

    import time




    # selezione dei 4 pin per controllare il bridge-motor

    GPIO.setmode(GPIO.BCM)

    GPIO.setwarnings(False)

    GPIO.setup(13,GPIO.OUT)

    GPIO.setup(19,GPIO.OUT)

    GPIO.setup(18,GPIO.OUT)

    GPIO.setup(12,GPIO.OUT)

    # definizione degli spostamenti (come da esempio precedente)

    def backward() :

    GPIO.output(13,GPIO.HIGH)

    GPIO.output(19,GPIO.LOW)

    GPIO.output(18,GPIO.HIGH)

    GPIO.output(12,GPIO.LOW)



    def forward() :

    GPIO.output(19,GPIO.HIGH)

    GPIO.output(13,GPIO.LOW)

    GPIO.output(18,GPIO.LOW)

    GPIO.output(12,GPIO.HIGH)




    def stop ():

    GPIO.output(13,GPIO.LOW)

    GPIO.output(19,GPIO.LOW)

    GPIO.output(18,GPIO.LOW)

    GPIO.output(12,GPIO.LOW)



    def left ():

    GPIO.output(19,GPIO.HIGH)

    GPIO.output(13,GPIO.LOW)

    GPIO.output(18,GPIO.HIGH)

    GPIO.output(12,GPIO.LOW)



    def right ():

    GPIO.output(19,GPIO.LOW)

    GPIO.output(13,GPIO.HIGH)

    GPIO.output(18,GPIO.LOW)

    GPIO.output(12,GPIO.HIGH)






    # cattura dei tasti premuti dall'utente



    screen = curses.initscr()

    curses.echo()

    curses.cbreak()

    screen.keypad(True)







    # cicla indefinitamente per catturare i comandi

    try:

    while True:



    char = screen.getch()

    print char





    # su = avanza

    if char == curses.KEY_UP:



    forward()





    # giu = retromarcia

    elif char == curses.KEY_DOWN:





    backward()



    # sinistra = left (gira a sinistra)

    elif char == curses.KEY_LEFT:





    left()

    # destra = right (gira a destra)

    elif char == curses.KEY_RIGHT:





    right()

    # p = ferma il robot

    if char == ord('p'):

    stop()

    # q = carattere di interruzione del programma

    if char == ord('q'):

    break












    # restituisce il controllo della tastiera

    finally:

    curses.nocbreak()

    screen.keypad(0)

    curses.echo()

    curses.endwin()




    # prima di uscire, pulizia del GPIO

    GPIO.cleanup()






    --- Ultima modifica di 19marinho in data 2020-06-05 12:51:34 ---