отправка строки из pyserial в Arduino - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно управлять двумя серводвигателями в зависимости от положения мыши на экране, но я не могу отправить координаты (в градусах от 0 ° до 180 °) с python на Arduino через последовательный порт. Проблема в том, что если я использую .encode () для последовательного порта, arduino не сможет прочитать строку. Это код Python:

import pyautogui
import time
import serial
ser = serial.Serial('/dev/tty.usbserial-1460', 9600)

for i in range(1000):
    x,y = pyautogui.position()
    x = x / (1439 / 180)
    y = y / (899 / 180)
    x = "X" + str(round(x)) + "Y" + str(round(y))
    ser.write(x)
    time.sleep(0.01)

Это код Arduino:

#include<Servo.h>

Servo serX;
Servo serY;

String serialData;

void setup() {
  serX.attach(6);
  serY.attach(5);
  Serial.begin(25000);
  Serial.setTimeout(10);
}

void loop() {
//lol
}

void serialEvent() {
  serialData = Serial.readString();
  serX.write(parseDataX(serialData));
  serY.write(parseDataY(serialData));
}

float parseDataX(String data){
  data.remove(data.indexOf("Y"));
  data.remove(data.indexOf("X"), 1);
  return data.toInt();
}

float parseDataY(String data){
  data.remove(0,data.indexOf("Y") + 1);
  return data.toInt();
}
...