Arduino上的LED不会根据条件打开/关闭

时间:2016-06-07 13:42:53

标签: arduino arduino-uno led

我有一个Arduino UNO R3,可以从我的网页中读取特定值。

我有一个LED连接到PIN 13&我的Arduino的GND。

当Arduino从我的网页读取1时,它应该打开LED。当它读为0时,应将其关闭。

以下是代码:

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"


InetGSM inet;

#define ledPin 13

char msg[165];
char store[2];
char a;
char b;

char* disp;

boolean started=false;

void setup()
{
      pinMode(ledPin, OUTPUT);
      digitalWrite(ledPin, LOW);
     //Serial connection.
     Serial.begin(9600);
     Serial.println("GSM Shield testing.");
     //Start configuration of shield with baudrate.
     //For http uses is raccomanded to use 4800 or slower.
     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

     if(started) 
     {
          //GPRS attach, put in order APN, username and password.
          //If no needed auth let them blank.
          if (inet.attachGPRS("TATA.DOCOMO.INTERNET", "", ""))
               Serial.println("status=ATTACHED");
          else Serial.println("status=ERROR");
          delay(1000);



          //TCP Client GET, send a GET request to the server and
          //save the reply.

          //Print the results.


     }
}

void loop()
{
  inet.httpGET("www.boat.esy.es", 80, "/retrieve.php", msg, 165);
  disp = strstr(msg,"\r\n\r\n");
  disp = disp+4;
  a = disp[0];
  b = disp[1];
  Serial.println(b);
  if(b=='1')
  { 
    digitalWrite(ledPin, HIGH);
  }
  if(b=='0');
  {
    digitalWrite(ledPin, LOW);
  }
}

问题在于,当我禁用digitalWrite(ledPin,LOW)时,即当我将其注释掉时,LED会亮起&amp;保持这种方式。

但是我启用它的那一刻&amp;在我的Arduino上加载代码,它甚至都不会打开。

我想知道这是一个逻辑错误还是别的什么。因为开启&amp; LED的关闭完全取决于满足的条件。而目前,我的网页只返回1,因此LED应保持开启状态。但是当我在同一代码中包含digitalWrite(ledPin, HIGH)digitalWrite(ledPin, LOW)并运行它时,它不起作用。我可以看到Serial打印出与LED相关的消息,但我没有看到LED亮起。

感谢您的时间!!

1 个答案:

答案 0 :(得分:2)

首先,你有一个分号,我认为不应该在你的第二个if语句中?

    if(b=='0'); <--
    {
      digitalWrite(ledPin, LOW);
    }

首先尝试删除它并查看是否存在差异。