// библиотека для работы с SPI #include // библиотека для работы с Ethernet Shield #include // MAC-адрес контроллера byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // задаем статический IP-адрес IPAddress ip(192, 168, 88, 177); // инициализируем библиотеку Ethernet Server // с необходимыми вам IP-адресом и портом // порт 80 используется для HTTP по умолчанию EthernetServer server(80); void setup() { // открываем последовательный порт Serial.begin(9600); // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.print("Serial init OK\r\n"); // запускаем Ethernet-соединение: if (Ethernet.begin(mac) == 0) { // если не удалось сконфигурировать Ethernet при помощи DHCP Serial.println("Failed to configure Ethernet using DHCP"); // продолжать дальше смысла нет, поэтому вместо DHCP // попытаемся сделать это при помощи IP-адреса: Ethernet.begin(mac, ip); } // запускаем сервер и выводим локальный IP адрес server.begin(); Serial.print("Server is at "); Serial.println(Ethernet.localIP()); } void loop() { // слушаем подключающихся клиентов EthernetClient client = server.available(); if (client) { // выводим сообщение о новом клиенте Serial.println("new client"); // HTTP-запрос заканчивается пустой линией boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // если добрались до конца строки (т.е. получили символ новой строки), // и эта строка – пустая, это значит, что это конец HTTP-запроса. // то есть, можно приступать к отправке ответа: if (c == '\n' && currentLineIsBlank) { // отсылаем стандартный заголовок для HTTP-ответа: client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); // после выполнения ответа соединение будет разорвано client.println("Connection: close"); // автоматически обновляем страницу каждые 5 секунд client.println("Refresh: 5"); client.println(); client.println(""); client.println(""); // выводим значения ото всех входных аналоговых контактов: for (int analogChannel = 0; analogChannel < 6; analogChannel++) { int sensorReading = analogRead(analogChannel); client.print("Analog input "); client.print(analogChannel); client.print(" is "); client.print(sensorReading); client.println("
"); } client.println(""); break; } if (c == '\n') { // начинаем новую строку currentLineIsBlank = true; } else if (c != '\r') { // в текущей строке есть символ: currentLineIsBlank = false; } } } // даем браузеру время, чтобы получить данные delay(1); // закрываем соединение client.stop(); // клиент отключился Serial.println("Client disconnected"); } }