我正在尝试用鼠标控制2个舵机。我有一个python程序寻找我的鼠标线,并将它们通过串行监视器发送到Arduino。我可以运行两个程序而不会阻止我运行,但是当我运行它们以正常工作时,python程序可以打印出我的电源线,所以我知道它是否正常工作,但是我不知道它是否将电源线发送到Arduino。这是我的代码,所有帮助都会徒劳的。
Arduino代码:
#include <Servo.h>
//1439
//899
Servo myservo;
Servo myservo1;
//String cordXstr;
//String cordYstr;
String cord;
int cordx = 0;
int cordy = 0;
void setup() {
myservo.attach(9);
myservo1.attach(10);
Serial.begin(9600);
}
void loop() {
cord = Serial.read();
if (cord[0] == 'x'){
cord.remove(0,1);
cordx = cord.toInt();
}
cord = Serial.read();
if (cord[0] == 'y'){
cord.remove(0,1);
cordy = cord.toInt();
}
cordx = map(cordx, 0, 1439, 0, 180);
myservo.write(cordx);
delay(15);
cordy = map(cordy , 0, 899, 0, 180);
myservo.write(cordy);
delay(15);
}
python代码
import serial
import pyautogui
ser = serial.Serial('/dev/tty.usbmodem14101', 9600)
while True:
x, y = pyautogui.position()
ser.write("x",x)
ser.write("y",y)
print(pyautogui.position())
答案 0 :(得分:0)
我可以同时运行两个程序
如何?
您的Arduino草图无法编译,因为您从未声明过http://127.0.0.1:3000/my-api but it's not.
myservo
导致语法错误。您的意思是类似ser.write("x"x)
(我不是Python专家)
您缺乏串行通信的基本知识。您尝试写“ x”,后跟一个整数。然后,您尝试读取一个字节,如果等于'x',则删除该字节的第一个字符(您只有1个字符!),然后将其转换为整数。 然后,您读了第二个字节,并尝试做相同的错误,甚至没有检查您是否收到了东西。
请参阅Arduino手册,以了解您实际使用的功能以及如何正确使用它们。
https://www.arduino.cc/reference/en/language/functions/communication/serial/
做一些Arduino / Python串行教程也有帮助。