Raspberry Pi到Arduino连续串行通信

时间:2018-04-15 14:13:59

标签: python arduino raspberry-pi

我想使用Raspberry Pi一侧的pyserial库将数据从我的Raspberry Pi发送到Arduino。我刚用USB连接两台设备。首先,我将程序上传到Arduino,检查是否有可用的串行数据然后我将读取它并使用if else语句比较接收的数据。如果我在Python程序中每隔5秒设置写入串口之间的延迟,它就能正常工作,但是如果我将延迟设置为1秒,它会随机读取它。我现在只使用Windows来测试它,然后再在Raspberry Pi上运行它。有什么办法可以让你更快地发送数据而不是增加5秒的延迟?下面是我写的示例代码。

的Python

import serial
import time

port=serial.Serial('COM8',9600)
time.sleep(5)

try:

    while True:
        port.write(b'Hi\n')
        time.sleep(5)
except:
    port.close()

Arduino的

String dataIn;
int led = 13;

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

  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);

  Serial.flush();
}

void loop()
{
  if (Serial.available())
  {
    dataIn = Serial.readStringUntil("\n");

    if (dataIn == "Hi\n")
    {
      digitalWrite(led, HIGH);
      delay(1000);
      digitalWrite(led, LOW);
      delay(1000);
    }

    Serial.flush();
    dataIn = "";
  }
}

0 个答案:

没有答案