3.4 MOVIMIENTOSPASO.py

Vamos a hacer una pequeña función donde le pasemos dos argumentos por cada motor (en total 4 argumentos): velocidad y número de pasos. Tiene que hacer: 
 
 Si el número de pasos es positivo va hacia delante el motor. 
 Si el paso es negativo es que el motor va hacia atrás. 
 Los motores funcionarán con la velocidades dadas en los argumentos. 
 En total 4 argumentos tiene la función, dos para cada motor R y L: velR,numR,velL,numL donde vel es la velocidad del motor y num el número de pasos. 
 
 ¿Te atreves? Sino, mira la solución: 
 Fichero MOVIMIENTOSPASO.py 
 import RPi.GPIO as GPIO
import time
import MOVIMIENTOS
from VARIABLES import *

###################################################################
#####################FUNCIóN AMBOS#################################
###################################################################
def BOTH(velR,numR,velL,numL):
 repetidoR=0
 repetidoL=0
 if (numR>0):
 GPIO.output(IN1,GPIO.HIGH)
 GPIO.output(IN2,GPIO.LOW)
 else:
 numR=-numR
 GPIO.output(IN1,GPIO.LOW)
 GPIO.output(IN2,GPIO.HIGH)
 if (numL>0):
 GPIO.output(IN4,GPIO.HIGH)
 GPIO.output(IN3,GPIO.LOW)
 else:
 numL=-numL
 GPIO.output(IN4,GPIO.LOW)
 GPIO.output(IN3,GPIO.HIGH)
 contadorR=0
 contadorL=0
 while ((contadorR<numR)or(contadorL<numL)):
 if (contadorR<numR):
 PWMA.start(velR)
 else:
 GPIO.output(IN1,GPIO.LOW)
 GPIO.output(IN2,GPIO.LOW)
 PWMA.start(0)
 if (contadorL<numL):
 PWMB.start(velL)
 else:
 GPIO.output(IN3,GPIO.LOW)
 GPIO.output(IN4,GPIO.LOW)
 PWMB.start(0)
 if ((GPIO.input(DataMotorR)==1)and(repetidoR==0)):
 contadorR=contadorR+1
 repetidoR=1
 print ('contador derecha = ',contadorR)
 if((GPIO.input(DataMotorL)==1)and(repetidoL==0)):
 contadorL=contadorL+1
 repetidoL=1
 print ('contador izquierda = ',contadorL) 
 if(GPIO.input(DataMotorR)==0):
 repetidoR=0
 if(GPIO.input(DataMotorL)==0):
 repetidoL=0

 MOVIMIENTOS.STOP()