arduino 串口输入文字运行一问
依据下面 arduino 程序 , 程序写入Arduino板卡后,打开串口试运行一下,分别输入ON,OFF, LED都沒有变化。我使用 Arduino 1.05 版,请问是何原因
String str = "";
int LED = 7;
void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop()
{
while (Serial.available() >0)
{
str +=char(Serial.read());
delay(2);
}
Serial.print(str);
if (str.length() >0)
{
if(str == "ON")
{
digitalWrite(LED,HIGH);
}
else if(str == "OFF")
{
digitalWrite(LED,LOW);
}
str = "";
}
}
int LED = 13;试试看,板子上的led
本帖最后由 hsiaochung 于 2013-8-23 22:35 编辑
int LED = 13; 一样不亮 hsiaochung 发表于 2013-8-23 22:33 static/image/common/back.gif
int LED = 13; 一样不亮
str 有print出来么? 代码看着木有问题啊 hsiaochung 发表于 2013-8-23 22:33 static/image/common/back.gif
int LED = 13; 一样不亮
你把pinMode(LED,OUTPUT);注释掉看下可以不
digitalWrite后面加延时! 输入 ON ,str 有print出来么ON , 但是if(str == "ON") 无法成功进入
pinMode(LED,OUTPUT);注释掉看下可以不=> 没用
digitalWrite后面加延时! => 没用 hsiaochung 发表于 2013-8-24 10:49 static/image/common/back.gif
输入 ON ,str 有print出来么ON , 但是if(str == "ON") 无法成功进入
pinMode(LED,OUTPUT);注释掉看下可 ...
那就是STR!==“ON”,你把串口监视输改为ASC看看,后面是否多了什么东西! 若是将 Serial.print(str); 改成 Serial.print(str,DEC);
输入 A ,会输出 6513
其中 65 是 A 的 ASCII 码
13 是 new line的 ASCII 码
输入 OK ,会输出 797513
其中 79 是 O 的 ASCII 码
75是 K的 ASCII 码
13 是 new line的 ASCII 码
程序没错,我只改了一点,你看看波特率和其他因素String str = "";
int LED = 13;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
while (Serial.available() > 0)
{
str += char(Serial.read());
delay(2);
}
if (str.length() > 0)
{
Serial.println(str);
if(str == "ON")
{
digitalWrite(LED, HIGH);
}
else if(str == "OFF")
{
digitalWrite(LED, LOW);
}
str = "";
}
} 还是无解 ,各位帮帮忙解决 本帖最后由 瘦网虫 于 2013-8-28 16:21 编辑
String类不使用==来判断,用equals
if( A.equals("ON"))
{
//here comes your code
}
http://arduino.cc/en/Reference/StringEquals
页:
[1]