【问题标题】:why slow serial start between raspberry pi and arduino?为什么树莓派和arduino之间的串行启动慢?
【发布时间】:2014-04-29 09:22:45
【问题描述】:

您好,我正在尝试通过 USB 连接在 arduino 和树莓派之间建立通信,但我遇到了一些我似乎无法理解的奇怪问题。我想将一些数据从 python 脚本发送到 arduino,然后让 arduino 点亮 LED。

编辑*我已经解决了这个问题,但我把问题留在这里,以防它帮助别人。问题是串行初始化时间。见下文

Python 代码。

import serial
import time

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=3)
ser.open()
ser.write('1')

arduino 代码

char serialRecieved;



/*output*/
int ledOne=8;
int ledTwo=12;
int ledThree=13;

/*input pins*/
int thermistor=1;

void setup(){
  pinMode(ledOne, OUTPUT);
  pinMode(ledTwo, OUTPUT);
  pinMode(ledThree, OUTPUT);
  Serial.begin(9600);
 }


void loop(){
   if (Serial.available() > 0) {
 
         serialRecieved=Serial.read();
         if(serialRecieved=='1'){lightLed(8,1000);}
         if(serialRecieved=='2'){lightLed(12, 1000);}
         if(serialRecieved=='3'){lightLed(13 , 1000);}
         if(serialRecieved=='4'){sendTemp();}
         delay(1);
   }
}

void lightLed(int led, int time){
     digitalWrite(led, HIGH);
     delay(time);
     digitalWrite(led, LOW);
 }

void sendTemp(){
  int temp=analogRead(thermistor);
  Serial.print(temp);
  }

当我运行 python 脚本时,我可以看到引脚 8 上的 LED 应该亮起,但它没有。奇怪的是,如果我运行一个循环(见下面的代码),它工作正常,只是循环的第一次迭代中的串行数据没有被处理。

除了第一次循环迭代之外,此脚本有效

import serial
import time


ser = serial.Serial('/dev/ttyACM0', 9600, timeout=3);
ser.open();

i=0
while i < 5:

ser.write('1')
ser.write('2')
ser.write('3')
ser.write('4')
time.sleep(1)
serial_data = ser.readline()
print("temperature")
print serial_data

i=i+1

有没有人知道为什么串行数据的第一部分丢失或无法读取?顺便说一句,如果你不知道我是 python、linux pi 和 arduino 的新手,对不起!

编辑,问题解决

好的,我刚刚发现了问题,这是由于在 pi 和 arduino 之间建立串行连接所花费的时间。如果有人遇到同样的问题,请点击此处的链接。

http://playground.arduino.cc/interfacing/python

现在我只需要了解如何知道串行连接何时准备好开始发送和接收数据。

【问题讨论】:

    标签: serialization arduino raspberry-pi


    【解决方案1】:

    连接到串行线可能会触发设备复位(这取决于使用的串行转换器)...调用引导加载程序;

    此功能用于将新草图加载到电路板中...通常电路板会在引导加载程序中停留约 1 秒,如果没有命令或命令无效,则启动主应用程序。

    如果您想禁用此功能..断开串行转换器上的 dtr 线 - 但在这种情况下,您也会失去上传草图的能力...您必须在每个上传周期手动按下重置按钮.

    哇...关于这个主题有一个有趣的文档:

    http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 1970-01-01
      • 2015-11-26
      • 2016-06-22
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      相关资源
      最近更新 更多