努力微笑 发表于 2014-9-27 19:14:04

如何让arduino串口接收到,拼音dakai之后D13的LED亮

最近买了一块串口的LD3320,不知道怎么让arduino读取字符,

努力微笑 发表于 2014-9-27 19:15:17

希望好心人,帮一下

zoologist 发表于 2014-9-27 20:03:29

卖家没有例程么

努力微笑 发表于 2014-9-27 20:30:48

没有,您能帮写个程序吗?

i7456 发表于 2014-9-28 12:50:15

本帖最后由 i7456 于 2014-9-28 12:52 编辑



// pins for the LEDs:
const int ledPin = 13;
String inStr;
char c;

void setup() {
// initialize serial:
Serial.begin(9600);
// make the pins outputs:
pinMode(ledPin, OUTPUT);
}

void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
    c = Serial.read();
    inStr += c;
}

if(inStr.indexOf("dakai")>=0)
{
   digitalWrite(ledPin, HIGH);
   inStr = "";
}
else if(inStr.indexOf("guanbi")>=0)
{
   digitalWrite(ledPin, LOW);
   inStr = "";
}
}

Ansifa 发表于 2014-9-29 21:39:45

看楼上代码,习惯性的加上2毫秒延时,会提高稳定性,ard的串口时序精度太差了

// if there's any serial available, read it:
while (Serial.available() > 0) {
    c = Serial.read();
    inStr += c;
delay(2);
}

i7456 发表于 2014-9-30 15:19:47

Ansifa 发表于 2014-9-29 21:39 static/image/common/back.gif
看楼上代码,习惯性的加上2毫秒延时,会提高稳定性,ard的串口时序精度太差了

// if there's any seria ...

这个不是arduino的问题吧?

串口缓冲区的中的内容增加1个字符,Serial.available() 的值增加1
Serial.read()执行一次,Serial.available() 的值减小1
本论坛中有人计算过,9600的波特率下,串口接收一个字符的时间大概是1.3ms,
但Serial.read()的执行速度可要快得多。如果不加延时,串口传输字符较多的情况下,可能会发生字符没有传输完,但Serial.available()为0的情况。导致每次读取的字符串不完整。

努力微笑 发表于 2014-10-1 16:30:13

i7456 发表于 2014-9-28 12:50 static/image/common/back.gif


谢谢了,我回去试试
页: [1]
查看完整版本: 如何让arduino串口接收到,拼音dakai之后D13的LED亮