Python无法通过Serial与Arduino通信

时间:2019-05-18 18:07:24

标签: python arduino serial-port

我试图用python将一些串行数据发送到我的Arduino并点亮LED开关,在Arduino IDE的串行监视器上它工作正常,但是一旦我尝试通过Python代码完成操作,它就不会工作

这是Arduino代码:


int LED = 7;
char serialData;

void setup() {
  pinMode(LED, OUTPUT); 
  Serial.begin(9600);
}

void loop() {

  serialData = Serial.read();


if(serialData == '1'){
  digitalWrite(LED, HIGH);
}

if(serialData == '2'){
  digitalWrite(LED, LOW);
}

}

这是Python代码:

import serial
import time

ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'

time.sleep(10)

ser.write("1")

现在,当我启动python代码时,应该通过串口将“ 1”发送给Arduino,Arduino应该接收它并点亮LED。

1 个答案:

答案 0 :(得分:0)

我认为您的Arduino代码很好,只不过您要等到串行端口(行serialData = Serial.read();)获得一些输入后,才能执行此操作。如果打算这样做,那很好,但是如果不这样做,则应考虑检查Serial.available()

主要问题在Python代码中。如pyserial documentation中所述,您需要打开串行端口。另外,您应该考虑在代码末尾关闭它(不必担心是否使用with按照here所述打开串行端口)。

我添加了一个for语句,以便您可以看到Arduino上的闪烁。

import serial
import time

ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'

ser.open()

for i in range(10):
    ser.write("1")
    time.sleep(1)
    ser.write("2")
    time.sleep(1)

ser.close()