如何将伺服值的限制设置为python变量

时间:2014-02-20 07:53:01

标签: javascript jquery python

我通过我的网络应用程序控制伺服电机。我有两个按钮,左右。当单击每个时,伺服应根据按钮稍微向左或向右转动。我正在使用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()

非常感谢!

0 个答案:

没有答案