Вот такой вот скетч. Я думаю, что многие его уже видели. В основном он взят из уроков по Ардуино.
#include "SPI.h" //библиотека для работы с SPI
#include "Ethernet.h" //библиотека для работы с Ethernet
//#include <EthernetUdp.h>
byte mac[] = { 0xDE, 0xAD, 0xBA, 0xEF, 0xFE, 0xEA };
IPAddress ip(192, 168, 1, 178);
//const unsigned int localPort = 9631;
bool flagEmptyLine = true; // признак строка пустая
bool flag1;
char tempChar;
//EthernetUDP Udp;
EthernetServer server(80); // создаем сервер, порт 80
EthernetClient client; // объект клиент
void setup() {
Ethernet.begin (mac, ip);//запускаем сервер с указанными ранее MAC и вашим IP
//Udp.begin(localPort);
Serial.begin (9600);
server.begin();
}
void loop() {
client = server.available(); // ожидаем объект клиент
if (client) {
flagEmptyLine = true;
Serial.println("New request from client:");
while (client.connected()) {
if (client.available()) {
tempChar = client.read();
if (tempChar == '1') flag1=true;
if (tempChar == '2') flag1=false;
Serial.write(tempChar);
if (tempChar == '\n' && flagEmptyLine) {
client.println("HTTP/1.1 200 OK"); // стартовая строка
client.println("Content-Type: text/html; charset=utf-8"); // тело передается в коде HTML, кодировка UTF-8
client.println("Connection: close"); // закрыть сессию после ответа
client.println(); // пустая строка отделяет тело сообщения
client.println("<!DOCTYPE HTML>"); // тело сообщения
client.println("<html>");
client. print ("<center><a href=\"/$1\"><button>Включить</button></a>"); //кнопка включить
client. print ("<a href=\"/$2\"><button>Выключить</button></a>"); //кнопка выключить
if (flag1) client.print("<p style=\"background-color:MediumSeaGreen;\">ВКЛЮЧЕНО</p>");
else client.print("<p style=\"background-color:Tomato;\">ВЫКЛЮЧЕНО</p></center>");
client.println("<hr/>");
client.println("</html>");
break;
}
if (tempChar == '\n') { // новая строка
flagEmptyLine = true;
}
else if (tempChar != '\r') { // в строке хотя бы один символ
flagEmptyLine = false;
}
}
}
delay(1);
client.stop();
Serial.println("Break");
}
}
Собственно вопрос: почему на кнопки приходится нажимать по два раза, чтобы изменилась надпись под кнопками? Где я накосячил?