[英]LED on Arduino won't turn on / off based on condition
我有一个Arduino UNO R3,可从我的网页中读取特定值。
我的Arduino的PIN 13和GND上连接了一个LED。
当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)
并运行它时,它不起作用。 我可以看到“串行”打印出与LED点亮相关的消息,但是我看不到LED点亮。
感谢您的时间!!
首先,我认为您不应在第二个if语句中使用分号?
if(b=='0'); <--
{
digitalWrite(ledPin, LOW);
}
首先尝试将其删除,看看是否有区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.