【发布时间】:2018-04-05 12:47:49
【问题描述】:
我有一个 ESP32,我使用 Arduino 来控制一些带有 Web 服务器的继电器。
现在我正在像这样检查继电器状态:
// We now create a URI for the request
String url = "/read.php?id=";
Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + "ESP" + ESPid + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
Serial.println(" ");
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
line = client.readStringUntil('\r'); // String
Serial.println(line);
}
if (line.toInt() == 100)
{
digitalWrite(Rele_1, LOW);
digitalWrite(Rele_2, HIGH);
digitalWrite(Rele_3, HIGH);
部分:
if (line.toInt() == 100)
{
digitalWrite(Rele_1, LOW);
digitalWrite(Rele_2, HIGH);
digitalWrite(Rele_3, HIGH);
将被复制并为每个可能的变化更改 100 个。
当我得到更多的继电器时,这不是一个很好的方法。每个继电器都有一个 1 或 0 来启动和停止。
有没有办法拆分100来控制继电器?就像从我的网络服务器推送 1&0&0 一样?
有没有办法将1&0&0 或r1=1&r2=0&r3=0 拆分成变量来控制继电器(引脚)?
【问题讨论】:
-
也许我不明白...但是,您想在您的网络服务器上推送一个字符串并解析它以打开或关闭您的继电器?比如:“1010”会打开第 4 和第 2 个继电器……像这样?
-
是的。没错。除了 1 开启,0 关闭。
-
那么,为什么不转换
line.toInt()为什么不逐字节迭代,然后您可以简单地读取字节值并打开或关闭。这将大大简化您的代码。我想line是String数据类型,所以你可以遍历每个元素。