Проблема с W5100
- Войдите на сайт для отправки комментариев
Здравствуйте, уважаемые форумчане!
Столкнулся с такой проблемой:
Имеется Arduino Uno, Ethernet Shield W5100 и датчик освещенности(измерения люксов), и 8 релейный модуль.
В общем задача такова: Arduino шлёт моему серверу сигнал на получение ответа, включать ли ей то или иное реле. Далее ардуина принимает ответ, если 1, зажигает реле, если 0 ничего не делает, параллельно она отправляет на мой сайт значения с датчика освещенности. Всё вроде бы работает, НО. Шилд со временем подвисает и не пингуется. Помогает ему лишь перезагрузка всей системы. В общем мне нужно узнать, в чем может быть проблема, в самом шилде или же в программе, сразу скажу ардуина и шилд не оригинальные, код программы ниже. Буду благодарен за ответы по делу. Спасибо.
#include <SPI.h> #include <Ethernet.h> #include <Wire.h> #include <BH1750.h> #define PIN5 5 BH1750 lightMeter; byte MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress IP(10, 10, 1, 55); EthernetServer arduino(81); EthernetClient client; boolean InboundRequest = 0; char resource[] = "example.com"; void setup() { pinMode(PIN5, OUTPUT); Serial.begin(9600); lightMeter.begin(); Ethernet.begin(MAC, IP); arduino.begin(); } void loop() { EthernetClient client = arduino.available(); if(client) { boolean EmptyLine = true; while(client.connected()) { if(client.available()) { char data = client.read(); if(data == '\n' && EmptyLine) { client.println("HTTP/1.1 200 OK"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println("<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"http://arduino.cc/en/favicon.png</a>\">"); client.println("</head>"); client.println("<body>"); client.println("</body>"); client.println("</html>"); break; } if(InboundRequest && data == ' ') { InboundRequest = 0; } if(data == '?') { InboundRequest = 1; } if(InboundRequest == 1) { int value = data - '0'; digitalWrite(PIN5, value); Response(); } if(data == '\n') { EmptyLine = true; } else if(data != '\r') { EmptyLine = false; } } } delay(1); client.stop(); } } void Response() { if(client.connect(resource, 80)) { String answer = "GET /update.php?status="; answer+=digitalRead(PIN5); answer+="&lux="; answer+=lightMeter.readLightLevel(); client.println(answer); client.println("Host: example.com"); client.println("Connection: close"); Serial.println(answer); } else { Serial.println("Connection failed."); } client.stop(); }