2016-06-07 41 views
0

我有一个Arduino UNO R3,它从我的网页上读取特定值。根据条件,Arduino上的指示灯不会打开/关闭

我有一个LED连接到我的Arduino的PIN 13 & 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指示灯亮起&保持这种方式。

但是现在我启用它&加载我的Arduino上的代码,它甚至不会打开。

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

谢谢你的时间!

回答

2

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

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

首先尝试删除它,看看是否有区别。

+0

这会解释它。 – weston

+0

不能相信我犯了这样一个愚蠢的错误!感谢您指出! – Auro