Столкнулся вот с чем: непонимаю как добиться одновременной работы EthernetServer и EthernetClient?
Хочется иметь возможность управлять пинами и считывать их значения как через web-интерфейс, так и через get-запросы. Выходит либо одно, либо другое. Подскажите, пожалуйста, как это сделать и, если можно, покажите простенький скетч.
Используется Arduino Uno + шилд W5100.
Код: Выделить всё
#include <DHT.h>
#include <SPI.h>
#include <Ethernet.h>
#define DHTTYPE DHT22
#define DHTPIN 9
DHT dht(DHTPIN, DHTTYPE);
int dhtTemp; int dhtHum; int dhtHIC;
/******************** НАСТРОЙКИ ETHERNET ********************/
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 };// физический mac адрес
byte ip[] = { 192, 168, 0, 9 }; // ip в lan
byte subnet[] = { 255, 255, 255, 0 }; // маска подсети
byte gateway[] = { 192, 168, 0, 1 }; // шлюз по умолчанию
EthernetServer server(80); // порт сервера
void setup()
{
Ethernet.begin(mac,ip,gateway,subnet); // инициализировать Ethernet устройства
server.begin(); // начать прослушивание клиентов
dht.begin();
}
void loop()
{
dhtCheck();
generateWebPage ();
}
void dhtCheck() {
dhtTemp = dht.readTemperature();
dhtHum = dht.readHumidity();
dhtHIC = dht.computeHeatIndex(dhtTemp, dhtHum, false);
}
void generateWebPage () {
EthernetClient client = server.available(); // искать клиента
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Lair module</title>");
client.println("<meta http-equiv=\"refresh\" content=\"15\">");
client.println("<meta http-equiv='content-type' content='text/html; charset=UTF-8'>");
client.println("</head>");
client.println("<body>");
client.println("<table>");
client.println("<tr>");
client.println("<td>");
client.println("<center>"); client.println("<b>Климат</b>"); client.println("</center>");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td>");
client.println("<b>Температура: </b>"); if (dhtHIC > 0) {client.print("+");} client.print(dhtHIC); client.println("°");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td>");
client.println("<b>Влажность: </b>"); client.print(dhtHum); client.println("%");
client.println("</td>");
client.println("</tr>");
client.println("</table>");
/*
client.println("<h2>Observing State Of Switch</h2>");
client.print("<h2>Switch is: </2>");
if (digitalRead(8))
{
client.println("<h3>ON</h3>");
}
else
{
client.println("<h3>OFF</h3>");
}
*/
client.println("</body>");
client.println("</html>");
delay(1); // даем время, чтобы принять данные
client.stop();
}
// http://tehnopage.ru/ethernet-shield-w5100
// http://radioprog.ru/post/109
Код: Выделить всё
http://192.168.0.251:80/objects/?script=tempupdated&temp=dhtTemp&hum=dhtHum