【发布时间】:2019-03-09 17:28:42
【问题描述】:
我正在测试一个带有 Adafruit io 的 nodeMCU 用于物联网。我做了一个简单的眨眼。但眨眼不工作。我想循环眨眼,这样当我通过 MQTT OFF 命令时它会停止工作。
#include <Adafruit_MQTT.h> //Adafruit MQTT Libraries
#include <Adafruit_MQTT_Client.h> //
#include <ESP8266WiFi.h> //ESP8266 Wi-Fi libraries
#define relayPin 16
无效设置():
void setup()
{pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
Serial.begin(9600);
delay(10);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
mqtt.subscribe(&onoffbutton); // Setup MQTT subscription for onoff feed.
}
这就是循环
void loop()
{
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000)))
{
if (subscription == &onoffbutton) {
Serial.print(F("Got: "));
Serial.println((char *)onoffbutton.lastread);
String response = (char*)onoffbutton.lastread; //converts the received ON or OFF to string to compare in the if-else statement
Serial.println(response);
if (response == "ON")
{
digitalWrite(relayPin, LOW);
delay(100);
digitalWrite(relayPin, HIGH);
delay(100);
}
else if(response == "OFF")
{
digitalWrite(relayPin, HIGH);
}
}
}
}
【问题讨论】:
-
ESP 芯片本身的哪个引脚是“relayPin”以及它连接到什么?你有什么证据表明你的程序实际上已经被加载了? LED 是在程序控制下还是完全自行闪烁的东西,比如我在附近某个地方的随机 ESP8266 模块中的车载电池充电器。
-
relayPin 是 16。我想永远闪烁,直到我按下 OFF。但是每次都需要单独输入。
-
第 16 针是什么?那是连接LED的地方吗?或许可以找到一张你的电路板的图片,并用相关引脚和相关 LED 的指示对其进行注释。如果 LED 不在板上,请显示支持它的电路。
-
您的问题标题表明您无法停止闪烁,而正文表明它根本不闪烁。你的问题是什么?代码的行为是什么?这与您预期的行为有何不同?
-
好的,那里有很多东西需要打折。如果
loop()只包含“ON”块中的四行,它会闪烁吗?如果不是,那么您的问题已经严重过度复杂化,我们回到:未初始化,错误引脚,硬件故障,无电源。输出真的是继电器吗?负载端有电吗,你开的是什么负载?这真的是硬件问题而不是软件问题吗?如果真的是机械,你真的能开那么快吗?
标签: c arduino embedded nodemcu adafruit