Периодическое чтение с сервера Arduino

У меня есть Arduino, подключенный к RGB-экрану. Я хочу периодически запрашивать у своего сервера значения RGB. В основном я работал с помощью Ethernet Shield, но получение значения занимает слишком много времени (~ 500 мс). Я действительно хочу очень быстро читать значения с моего сервера в бесконечном цикле.

Можете ли вы дать мне какие-нибудь советы о том, как мне улучшить свой код?

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,1,151); 
IPAddress ip(192, 168, 1, 177);
EthernetClient client;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // ждем подключения последовательного порта. Требуется только для Леонардо.
  }

  // запускаем Ethernet-соединение:
  if (Ethernet.begin(mac) == 0) {
    Ethernet.begin(mac, ip);
  }

  delay(1000);

  if (client.connect(server, 80)) {
    client.println("GET /rgb.php HTTP/1.1");
    client.println("Host: 192.168.1.151");
    client.println("Connection: close");
    client.println();
  }
  else {
    Serial.println("connection failed");
  }
}


void loop()
{
  if (client.available()) {
    char c = client.read();

    ... read from Server    

  }


  if (!client.connected()) {
    client.stop();
    if (client.connect(server, 80)) {
      client.println("GET /rgb.php HTTP/1.1");
      client.println("Host: 192.168.1.151");
      client.println("Connection: close");
      client.println();
    }   
  }
}

, 👍0

Обсуждение

вы можете использовать протокол mqtt, он поддерживает push-уведомления вместо опроса и намного легче, @Jossef Harush