我有一个python函数,每次单击web界面上的按钮时,它都会将伺服向左或向右旋转。目前它是这样工作的:
@cherrypy.expose
def turnCamera (self, **data):
import pigpio
import time
servos=[4,7] #GPIO number
pigpio.start()
key = data['direction']
if key=="left":
servostatus = "left"
print servostatus
m=1500
elif key=="right":
servostatus = "right"
print servostatus
m=1000
#to dispense pill
if key=="dispense":
m=900
pigpio.set_servo_pulsewidth(servos[0], m)
servostat= "Position of servo: %s"%m
print servostat
time.sleep(1)
m=1500
pigpio.set_servo_pulsewidth(servos[0], m)
servostat= "Position of servo: %s"%m
print servostat
time.sleep(1)
pigpio.stop()
return servostat
数据从jQuery发布:
$('#left_button').click(function(){
$.post('/turnCamera', {direction:"left"}).done(function (reply) {
$('#camerapos').empty().append(reply);
alert("left button clicked");});
});
$('#right_button').click(function(){
$.post('/turnCamera', {direction:"right"}).done(function (reply) {
$('#camerapos').empty().append(reply);
alert("right button clicked");});
});
不过,我想伺服转动,这样每次点击将使它转100。当脚本第一次运行时,它会转到初始位置m=1500
。然后用户可以通过单击左或右来控制相机的位置。像这样:
m=1500
while (m >= 500 and m <= 2500):
if (key =="left"):
m=m+100
elif (key =="right"):
m=m-100
不过,我明白,这将不起作用,因为m将得到重置为1500每次功能被触发(按钮被点击)。如何存储m的值?你知道吗
你可以做这个方法
return [servostat, m]
然后更改该方法,使其具有一个参数,您可以在其中传入上一个调用的m,如
def turnCamera(self, **data, m):
具体如下:
相关问题 更多 >
编程相关推荐