Мне нужно управлять двумя серводвигателями в зависимости от положения мыши на экране, но я не могу отправить координаты (в градусах от 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();
}