Recuerda que, antes de nada, tendrás que utilizar directamente el ciclo para luego rehacer la función del ángulo

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 2.5 en dutycycle pone el servo en 20º
# 12 en dutycycle pone el servo en 180º

#por tanto m=(y2-y1)/(x2-x1)--> m=(12-2.5)/(180-20)--->0.06

#Cálculo del ángulo será y-y1=m(x-x1)--->y-2.5=0.06(x-20)-->y=0.06(x-20)+2.5
import RPi.GPIO as io
from time import sleep
def calculamov(angulo):
	print (float(angulo)-20)*0.06 + 2.5
	return (float(angulo)-20)*0.06 + 2.5

io.setmode(io.BCM)
pinMOTOR = 17
INTERRUPTOR = 27
io.setup(pinMOTOR, io.OUT)

MOTOR = io.PWM(pinMOTOR, 50)

MOTOR.start(calculamov(90))

pausa = 0.5
try:
	while True:
		angulo=input('Dame el ángulo, porfa...')
		MOTOR.ChangeDutyCycle(calculamov(angulo))
		sleep(pausa)
		
		
except KeyboardInterrupt:
	print "Salimos"
	MOTOR.stop()
	io.cleanup()

Un saludo

Anuncios