Проба пера так сказать, критика и советы приветствуются.

Нет ответов
triada13
Offline
Зарегистрирован: 04.01.2013

Доброе время суток.

Осваиваю Ethernet Shield на 5100 и передачу информации о температуре и влажности в локальную сеть.

Сознаюсь сразу скетч писал не сам, а составляю из кусков примеров, не тяну пока самостоятельно писать.

Вот код на ваш суд:

// Подключаем библиотеки.
#include <SPI.h>
#include <Ethernet.h>
#include <dht.h>

// Указываем MAC, IP адреса, и порт.
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192,168,1, 177);
EthernetServer server(80);

// Создаем объект и сажаем на 2 цифровой пин.
dht DHT;
#define DHT11_PIN 2


void setup() 
{
  // Открываем соединение и запускаем сервер:
  Ethernet.begin(mac, ip);
  server.begin();
}


void loop() 
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) 
  {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) 
    {
      if (client.available()) 
      {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) 
         {
           // send a standard http response header
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println("Connection: close");
           client.println();
           client.println("<!DOCTYPE HTML>");
           client.println("<html>");
           // add a meta refresh tag, so the browser pulls again every 5 seconds:
           client.println("<meta http-equiv=\"refresh\" content=\"10\">");
           // output the value of each analog input pin
           
           client.print("<h2>Sensor: DHT11</h2>");
           client.print("<TABLE>");
           client.print("<TR>");
           client.print("<TD><h2><b>Status: </b></h2></TD>");
           
           client.print("<TD>");
           int chk = DHT.read11(DHT11_PIN);
           switch (chk)
            {
             case DHTLIB_OK:  
              client.print("OK,\t"); 
             break;
             case DHTLIB_ERROR_CHECKSUM: 
              client.print("Checksum error,\t"); 
             break;
             case DHTLIB_ERROR_TIMEOUT: 
              client.print("Time out error,\t"); 
             break;
             default: 
              client.print("Unknown error,\t"); 
             break;
            }
           client.print("</TD>");
           client.print("<TR></TR>");
           client.print("<TD><h2><b>Humidity: </b></h2></TD>");
           client.print("<TD><h3>");
           client.print(DHT.humidity,1);
           client.print("</h3></TD>");
           client.print("<TR></TR>");
           client.print("<TD><h2><b>Temperature: </b></h2></TD>");
           client.print("<TD><h3>");
           client.println(DHT.temperature,1);
           client.print("</h3></TD>");
           client.println("</TR></TABLE></html>");
           break;
         }
        if (c == '\n') 
         {
            // you're starting a new line
            currentLineIsBlank = true;
         } 
        else if (c != '\r') 
         {
            // you've gotten a character on the current line
            currentLineIsBlank = false;
         }
       }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}