代码中心工作串行监控器和伺服器

时间:2020-06-30 20:31:16

标签: python arduino

我正在尝试用鼠标控制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())

1 个答案:

答案 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串行教程也有帮助。