Проба пера так сказать, критика и советы приветствуются.
- Войдите на сайт для отправки комментариев
Вс, 10/03/2013 - 21:25
Доброе время суток.
Осваиваю 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");
}
}