Arduino 上的 LED 不会根据条件打开/关闭
LED on Arduino won't turn on / off based on condition
我有一个 Arduino UNO R3 可以从我的网页读取特定值。
我有一个 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 的亮灭完全取决于条件是否满足。现在,我的网页 returns 只有 1,因此 LED 应该保持亮着。但是当我在同一代码中包含 digitalWrite(ledPin, HIGH)
和 digitalWrite(ledPin, LOW)
并且包含 运行 时,它不起作用。我可以看到串行打印出与 LED 亮起相关的消息,但我没有看到 LED 亮起。
感谢您的宝贵时间!!
首先你有一个我认为不应该出现在你的第二个 if 语句中的分号?
if(b=='0'); <--
{
digitalWrite(ledPin, LOW);
}
首先尝试删除它,看看是否存在差异。
我有一个 Arduino UNO R3 可以从我的网页读取特定值。
我有一个 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 的亮灭完全取决于条件是否满足。现在,我的网页 returns 只有 1,因此 LED 应该保持亮着。但是当我在同一代码中包含 digitalWrite(ledPin, HIGH)
和 digitalWrite(ledPin, LOW)
并且包含 运行 时,它不起作用。我可以看到串行打印出与 LED 亮起相关的消息,但我没有看到 LED 亮起。
感谢您的宝贵时间!!
首先你有一个我认为不应该出现在你的第二个 if 语句中的分号?
if(b=='0'); <--
{
digitalWrite(ledPin, LOW);
}
首先尝试删除它,看看是否存在差异。