用python控制arduino

问题描述 投票:0回答:1

我正在做一个简单的项目,涉及使用Python控制Arduino,同时Arduino控制两个伺服电机。问题是,无论我从 Python 向 Arduino 发送什么字符或数字,舵机都会以某种方式移动。如果数据不正确,则不应发生这种情况。甚至两个舵机同时移动。

###python code###
import serial
import time

def iniciar():
    try:
        arduino = serial.Serial("COM7", 9600)
        time.sleep(2)

        while True:
            a = int(input(": "))
            arduino.write(b'a')
            if a == "x":
                    break

    finally:
        arduino.close()

#while True:
iniciar()

###arduino代码

#include <Servo.h>
Servo ON;
Servo OFF;
char pr;

void setup() {
Serial.begin(9600);

OFF.attach(8);
ON.attach(9);

}

void loop() {
  if(Serial.available()>0){
    pr = Serial.read();
    if(pr == 'b'){ 
      ON.write(0);  // tell servo to go to a particular angle
      delay(1000);
      ON.write(90);              
      delay(500);
    }
    if(pr == 'a'){
      OFF.write(0);  // tell servo to go to a particular angle
      delay(1000);
      OFF.write(90);              
      delay(500);
    }
  } 
}

我尝试更改从Python发送的数据类型,从“int”切换为“char”。我想错误可能在于使用“try”块,但老实说,我不太清楚;我对使用 Python 有点陌生。

python automation arduino
1个回答
0
投票

无论用户输入如何,您始终将相同的字节 b'a' 发送到 Arduino。

arduino.write(b'a')

你可以尝试这样的事情:

while True:
            a = input(": ")
            if a in ['a', 'b']:  # only send valid inputs
                arduino.write(a.encode())
© www.soinside.com 2019 - 2024. All rights reserved.