hsiaochung 发表于 2013-8-23 21:11:41

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 = "";
}
}

zjgaoli888 发表于 2013-8-23 22:00:14

int LED = 13;试试看,板子上的led

hsiaochung 发表于 2013-8-23 22:33:54

本帖最后由 hsiaochung 于 2013-8-23 22:35 编辑

int LED = 13; 一样不亮

zjgaoli888 发表于 2013-8-24 01:15:45

hsiaochung 发表于 2013-8-23 22:33 static/image/common/back.gif
int LED = 13; 一样不亮

str 有print出来么? 代码看着木有问题啊

zjgaoli888 发表于 2013-8-24 01:17:05

hsiaochung 发表于 2013-8-23 22:33 static/image/common/back.gif
int LED = 13; 一样不亮

你把pinMode(LED,OUTPUT);注释掉看下可以不

拾瑞 发表于 2013-8-24 10:15:29

digitalWrite后面加延时!

hsiaochung 发表于 2013-8-24 10:49:17

输入 ON ,str 有print出来么ON , 但是if(str == "ON") 无法成功进入

pinMode(LED,OUTPUT);注释掉看下可以不=> 没用

digitalWrite后面加延时! => 没用

拾瑞 发表于 2013-8-24 11:26:15

hsiaochung 发表于 2013-8-24 10:49 static/image/common/back.gif
输入 ON ,str 有print出来么ON , 但是if(str == "ON") 无法成功进入

pinMode(LED,OUTPUT);注释掉看下可 ...

那就是STR!==“ON”,你把串口监视输改为ASC看看,后面是否多了什么东西!

hsiaochung 发表于 2013-8-24 12:14:15

若是将 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 码

Ansifa 发表于 2013-8-24 14:05:48

程序没错,我只改了一点,你看看波特率和其他因素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 = "";
    }
}

hsiaochung 发表于 2013-8-24 15:50:29

还是无解 ,各位帮帮忙解决

瘦网虫 发表于 2013-8-28 16:05:48

本帖最后由 瘦网虫 于 2013-8-28 16:21 编辑

String类不使用==来判断,用equals

if( A.equals("ON"))
{
//here comes your code
}

http://arduino.cc/en/Reference/StringEquals
页: [1]
查看完整版本: arduino 串口输入文字运行一问