为什么输入不是通过串口从Python到Arduino板

时间:2017-12-01 10:16:15

标签: python-3.x arduino serial-port arduino-uno arduino-ide

从Arduino IDE输入响应,灯泡发光。但是,Python中的相同内容无效。

问题是什么?

期望的行为

Arduino IDE串行输入 - >响应行为应该与串行输入相匹配 - > Python代码的响应行为。

当使用输入13写入串行端口时,引脚ON上的LED灯泡应设置为HIGH / 1

示例代码

Arduino代码:

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

void loop() {
  if (Serial.available()) {
    char serialListener = Serial.read();
    if (serialListener == 1) {
      digitalWrite(13, HIGH);
    } else if (serialListener == 0) {
      digitalWrite(13, LOW);
    }
  }
}

Python代码:

import serial

ser = serial.Serial('COM3', baudrate=9600, timeout=1)
ser.close()
ser.open()
ser.write("1".encode())

1 个答案:

答案 0 :(得分:1)

使用if (serialListener == 1),您需要一个值为1的字节 使用ser.write("1".encode()),您将发送带有ASCII代码49的字符'1'

您需要在Arduino中修复比较以匹配您发送的内容,因此您要比较字符而不是字节值。

if (serialListener == '1') {
  digitalWrite(13, HIGH);
} else if (serialListener == '0') {
  digitalWrite(13, LOW);
}