【发布时间】:2021-03-16 14:16:23
【问题描述】:
我有一个问题要问大家,打印后是否可以在内存中保存一个值。我举个例子:
Nodered 创建的界面有一个滑块,其数字从 20 到 30。你滑动它并选择一个像 25 这样的值,然后将该值发送回 arduino 或 esp 串行监视器,有一个命令可以创建一个该数字 25 的变量。好吧,一切都很好,但我知道当您发送数字时,它会触发变量 1 次。而且我需要一个可以在使用时记住该值的函数
我正在建造一个温室(多么原始),我想无线使用它,比如在温度为 22 摄氏度、光照百分比为 10% 以及时间为 19:00 至 22:00 时设置植物浇水给它浇水
问题是如何使用节点中滑块设置的变量在设置的确切温度下给植物浇水
这是我将在mqttFloodInterval 末尾使用的代码,我可以设置从 nodered 获取的变量
void mqttCallback(char* topic, byte* message, unsigned int length) {
Serial.print("MQTT message received on topic: ");
Serial.print(topic);
Serial.print(". Message: ");
String messageTemp;
for (int i = 0; i < length; i++) {
Serial.print((char)message[i]);
messageTemp += (char)message[i];
}
Serial.println();
Serial.println(messageTemp);
if (String(topic) == mqttFloodInterval) {
Serial.print("*** (Flood Interval Received)");
}
}
为 ocrdu 编辑类似这样的东西:
if (String(topic) == mqttFloodInterval) {
Serial.print("*** (Flood Interval Received)");
mqttFloodInterval = wtrtemp;
}
if(wtrtemp == 23){
digitalWrite(RELAY_PIN, HIGH); // turn on pump 5 seconds
delay(5000);
}
else {
digitalWrite(RELAY_PIN, LOW); // turn off pump 5 seconds
delay(5000);
}
然后做所有的 if 就像 if(wtrtemp == 24), if(wtrtemp == 25).... 等等
【问题讨论】:
-
这个问题很难理解你想要完成的事情。我想在您的脑海中,阅读这个问题时很清楚,因为您是该项目的构造者并且心中有一个目标。但是我强烈建议您尝试告诉您您正在尝试做什么以及您遇到的当前问题,就像您向以前从未见过这样的系统的人解释它:)
-
Serial.print("*** (Flood Interval Received)");在此命令之后,我可以打开 LED 或其他东西,但是如果我将其设置为 25,则我需要将值保存在程序内存中,假设该数字应保存在内存中稍后使用,例如当传感器百分比值降至 25 以下时,某些命令将生效以打开继电器 5 秒以给植物浇水。问题是,当您发送低于我在开始时编写的命令的值时,它会触发程序一次并触发它。我需要一个可以保存该值以供以后使用的函数。 -
因为当您使用滑块时,它只会发送一次值。滑块用于选择为植物浇水应达到的温度
-
这是我在这个项目中面临的最大问题,它将决定程序的成败:D
标签: c++ arduino raspberry-pi adc