我通过我的网络应用程序控制伺服电机。我有两个按钮,左右。当单击每个时,伺服应根据按钮稍微向左或向右转动。我正在使用jQuery .post()
函数发布到python函数turnCamera
。
我的问题如下:
如何确保不会超出伺服值的限制,并且每次调用该功能时都无需重置m
的值?从我的脚本中,我认为m
的值每次调用时都会重置为1500,这将导致伺服转向仅2个位置!中性位置(90度)为1500. m
的最小值和最大值分别为500和2500。超出该范围的任何值都会对我的伺服造成伤害。
另外,python实际上会这样运行吗?如何查看print
的输出?我正在使用done
函数正确吗?
以下是我的HTML和jQuery的一部分:
<script>
$(document).ready(function(){
$('#left_button').click(function(){
$.post('cameraservo.py/turnCamera', {direction:"left"}).done(function (reply) {
$('#camerapos').html(reply)});
});
$('#right_button').click(function(){
$.post('cameraservo.py/turnCamera', {direction:"right"}).done(function (reply) {
$('#camerapos').html(reply)});
});
});
</script>
<div id="control_button">
<img src="button_left.png" id="left_button" height="50" width="50">
<img src="button_right.png" id="right_button" height="50" width="50">
</div>
我的Python代码:
def turnCamera (self, **data):
import pigpio
import time
# import serial
# def servo_control(command):
# serialport= serial.Serial ("/dev/ttyACM0", 9600, timeout=0.5)
# serialport.write(command)
# return serialport.readlines(1)
servos=[4]
key = data['direction']
m=1500 #what to do with this??
while (m >= 500 and m <= 2500):
if key="left":
m=m+100
else if key="right":
m=m-100
pigpio.start()
pigpio.set_servo_pulsewidth(servos[0], m)
print("Servo {} {} micro pulses".format(servos[0], key, m))
time.sleep(1)
pigpio.stop()
非常感谢!