19marinho
Profilo di
Nome | 19marinho |
---|---|
Indirizzo email | n/a |
Messaggi | 1 |
-
- 2020-06-05 12:07:44
- 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 ---