如何让arduino串口接收到,拼音dakai之后D13的LED亮
最近买了一块串口的LD3320,不知道怎么让arduino读取字符, 希望好心人,帮一下 卖家没有例程么 没有,您能帮写个程序吗? 本帖最后由 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 = "";
}
}
看楼上代码,习惯性的加上2毫秒延时,会提高稳定性,ard的串口时序精度太差了
// if there's any serial available, read it:
while (Serial.available() > 0) {
c = Serial.read();
inStr += c;
delay(2);
} 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的情况。导致每次读取的字符串不完整。 i7456 发表于 2014-9-28 12:50 static/image/common/back.gif
谢谢了,我回去试试
页:
[1]