使用Python和Arduino通过串口移动伺服不工作

时间:2016-07-19 02:09:22

标签: python arduino pyserial servo

在Python中,我制作了一个脚本来读取游戏的指针,它通过python控制台读取和输出数据。现在我试图将数据发送到Arduino并移动类似于速度计的伺服电机。

我遇到的问题是当伺服电机从python接收数据时,它没有正确移动。有时它会被卡住,有时它没有响应。有点奇怪,因为我试图手动将伺服电机从python移动到arduino并且它响应,但延迟0.5秒,即使我尝试使用LED,它也会立即响应。

这里是Arduino的代码

#include <Servo.h>

int angulo = 0;
Servo miServo;

void setup() {
  miServo.attach(3);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available() > 0)
  {
    angulo=Serial.parseInt();
    angulo=constrain(angulo,0,180);
  }
  miServo.write(angulo);
}

这是我从python

执行的代码
# memreading it's from a module that i've created
import memreading, serial

# PLANTILLA
###################################################
proceso = 'or2006c2c.exe'
velocidad = 0x07806A4

# CODIGO COMUNICACION SERIAL
###################################################   
ser = serial.Serial('COM3', 9600)

# CODIGO LECTURA DE MEMORIA
###################################################
mem = memreading.MemReading()

processHandle = mem.openProcess(mem.attachToProcess(proceso))

def lecturaMemoria():
    data = mem.readMemory(processHandle, velocidad)
    data = int(float(data)/1.59)
    return str(data)

while True:
    try:
        ser.open()
        dato = lecturaMemoria()
        print dato
        ser.write(dato)
    except KeyboardInterrupt:
        ser.close()
        break

以下是在内存https://gist.github.com/PPastene/f955a80abc55964733accc9d9133b488

中读取的代码

我不会解释该代码,但数据从mem.readMemory()函数返回为字符串。它被解析为整数,因为它需要计算然后再次解析为字符串(我不能在循环中放置一个整数值,python给出错误,因为整数对象不可迭代)

0 个答案:

没有答案
相关问题