想要做一些物联网的东西所以我买了一台ESP8266(WeMos D1 Mini Pro)。
只有按下按钮,我才想将MQTT消息发送到我的服务器。
我将按钮的一侧连接到GNR,另一侧连接到D6(GPIO12)。
我设置pinMode(12, INPUT);
并在循环内部:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
boolean pinState = digitalRead(12);
Serial.printf("Start State: %s",(pinState)?"HIGH":"LOW");
Serial.println();
if (pinState == LOW) {
const char* test2 = "Test";
Serial.print("Publish message: ");
Serial.println(test2);
client.publish("iPub", test2);
}
}
pinState从HIGH
开始,我可以看到它循环播放。当我按下按钮时,它变为LOW
(发送消息),输入if语句,引脚状态继续为LOW
。所以它无法停止发送消息。但是当我释放按钮时,引脚应该改变它的状态?
我尝试在if中添加pinState = !pinState;
,但之后状态为LOW
。
我该如何解决这个问题?