arduino nano, w5500
Опишу проблему: связь с устройством с 2 пк по кабелю по локальной сети проходит четко. Но с телефона и с пк через wifi не загружается сайт… причем именно с моим кодом. а оригинал работает на все 100… почему так?
проблема 100% в этом куске кода:
byte dataArray_reads[4]={192,168,2,177};
byte dataArray_read[4]={dataArray_reads[0],dataArray_reads[1],dataArray_reads[2],dataArray_reads[3]};
EthernetServer server(80);
void setup() {
pinMode(3, INPUT);
if (EEPROM.read(10) != 51) { // первый запуск
EEPROM.put(10, 51); // записали ключ
EEPROM.put(0, dataArray_read); // записали стандартный ip
}
EEPROM.get(0, dataArray_read);
IPAddress ip(dataArray_read[0],dataArray_read[1],dataArray_read[2],dataArray_read[3]);
delay(3000);
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("IP: ");
Serial.println(Ethernet.localIP());
Оригинал работает на все 100%, и вот как он выглядит:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(10,0,0,177);
EthernetServer server(80);
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("IP: ");
Serial.println(Ethernet.localIP());
}
Весь мой код:
#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>
byte mac[] = { 0xD5, 0xAD, 0xB6, 0xE6, 0xFE, 0xD0 };
/**Стандартный IP адрес**/
byte ipUp =0;
int buttonState = 0;
byte dataArray_reads[4]={192,168,2,177};
byte dataArray_read[4]={dataArray_reads[0],dataArray_reads[1],dataArray_reads[2],dataArray_reads[3]};
EthernetServer server(80);
void setup() {
pinMode(3, INPUT);
if (EEPROM.read(10) != 50) { // первый запуск
EEPROM.put(10, 50); // записали ключ
EEPROM.put(0, dataArray_read); // записали ключ
}
EEPROM.get(0, dataArray_read);
IPAddress ip(dataArray_read[0],dataArray_read[1],dataArray_read[2],dataArray_read[3]);
delay(50);
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("IP: ");
Serial.println(Ethernet.localIP());
}
void loop() {
if(ipUp==1){
byte ips[4]={192,168,2,17};
EEPROM.put(0, ips);
ipUp=0;delay(50);
asm volatile("jmp 0x00");
}
//Сброс на заводские настройки
buttonState = digitalRead(3);
// если нажата, то buttonState будет HIGH:
if (buttonState == HIGH) {
delay(50);
//Serial.println(dataArray_reads[0]);Serial.println(dataArray_reads[1]);Serial.println(dataArray_reads[2]);Serial.println(dataArray_reads[3]);
EEPROM.put(0, dataArray_reads);
delay(100);
asm volatile("jmp 0x00");
}
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean ok = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && ok) {
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><head><meta charset='UTF-8'><title>Привет !!!</title></head><body>Привет</body></html>");
//client.println("<html><meta charset='UTF-8'>");
//client.println("<h1>Привет Youtube!!!</h1>");
//client.println("</html>");
break;
}
if (c == '\n'){ok = true;}else if(c != '\r'){ok = false;}
}
}
delay(1);
client.stop();
Serial.println("client disconnected");
}
}