Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##!/usr/bin/python3
- #Antonio Villanueva Segura
- # Test Movimiento robot basado en RaspBerry pi y L293D
- #sudo arp -a | grep raspberry
- #sudo nmap -sP 192.168.1.0/24 | grep raspberry
- import sys
- import RPi.GPIO as GPIO
- from time import sleep
- import curses
- VELOCIDAD=75
- #GPIO.setmode(GPIO.BOARD) #Pins
- GPIO.setmode(GPIO.BCM) #Utilizo la notacion BCM
- GPIO.setwarnings(False)
- #L293D
- #Izquierda
- GPIO.setup(4,GPIO.OUT) #Enable 1 PIN1
- GPIO.setup(17,GPIO.OUT) #Input 1 PIN2
- GPIO.setup(27,GPIO.OUT) #input 2 PIN7
- #Derecha
- GPIO.setup(18,GPIO.OUT) #Input 4 PIN15
- GPIO.setup(22,GPIO.OUT) #imput 3 PIN10
- GPIO.setup(23,GPIO.OUT) #Enable 2 PIN9
- #Control de los dos motores del robot
- def Motores(HABILITA_A=False,MOTOR_A1=False,MOTOR_A2=False,HABILITA_B=False,MOTOR_B1=False,MOTOR_B2=False):
- #Test Movimiento motores
- GPIO.output(4, HABILITA_A) #Habilita 1
- GPIO.output(17, MOTOR_A1) #input 1 A1
- GPIO.output(27, MOTOR_A2) #input 2 A2
- #Test Movimiento motores
- GPIO.output(23, HABILITA_B) #Habilita 2
- GPIO.output(18, MOTOR_B1) #Input 4 B1
- GPIO.output(22, MOTOR_B2) #Input 3 B2
- Motores(False,False,False,False,False,False) #Arranca con los motores parados
- #Activacion de motores segun la tecla pulsada
- def activa(tecla,VEL):
- if tecla=="8": #Avance Robot
- Motores(VEL,False,True,VEL,False,True)
- return
- if tecla=="2": #Retroceso Robot
- Motores(VEL,True,False,VEL,True,False)
- return
- if tecla=="6": #Avance solo motor 1 Derecha
- Motores(VEL,False,True,False,False,False)
- return
- if tecla=="9": #Retroceso motor1 Robot
- Motores(VEL,True,False,False,False,False)
- return
- if tecla=="4": #Avance solo motor 2 Izquierda
- Motores(False,False,False,VEL,False,True)
- return
- if tecla=="7": #Retroceso motor 2 Robot
- Motores(False,False,False,VEL,True,False)
- return
- if tecla=="0": #STOP Robot
- Motores(False,False,False,False,False,False)
- return
- if tecla=="q": #STOP Robot salir del programa forma limpia curses
- Motores(False,False,False,False,False,False)
- curses.endwin()
- sys.exit(0)
- return
- #Si no se pulsa ninguna tecla se para el robot
- Motores(False,False,False,False,False,False)
- #Bucle principal
- velocidad=False
- if __name__ == '__main__':
- win = curses.initscr() #Inicio de curses
- win.addstr(0, 0, "Lee teclas ") #Mensaje en pantalla
- while True:
- win.timeout(100) #No se bloquea la lectura de tecla en 100
- ch=win.getch() #Lee una tecla
- if ch<0: #Si no se pulsa tecla rectifica a un valor 0...
- ch='0'
- else:
- ch=chr(ch)
- velocidad=not velocidad #Un pwm al 50% para reducir la velocidad
- activa(ch,velocidad)#Activa los motores segun la tecla pulsada
- curses.endwin()
- sys.exit(0)
Add Comment
Please, Sign In to add comment