[英]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.