У меня такая же проблема.
Я обнаружил, что проблема возникает с некоторыми типами коммутаторов, потому что у меня их два (Encore Model ENH908-NWY Ver 3 и другие IntelliNet Model 523301 Rev1).
С коммутатором Encore DHCP представляет проблему, Ethernet.begin (mac) возвращает 0, но с IntelliNet процесс DHCP работает без проблем.
У меня дома ADSL Huawei, который обрабатывает запросы DHCP.
Я думаю, что проблема решается с сетевым экраном r3, но я этого не пробовал.
Я отправляю код с ним, я пытаюсь запросы DHCP.
Когда я пробую ethernet shield r3, я прихожу сюда и говорю вам.
Привет! * * 1015
Свойство mac ранее определено как байт массива с шестью шестнадцатеричными значениями.
void networkSetting(){
byte stateNet = 0;
//Se realiza petición DHCP para otros parámetros de Red si no están en memoria ya sea por System o Usuario
if ((EEPROM.read(userConfig) != setted) && (EEPROM.read(systemConf) != setted)) {
//Configurar el Socket solo con Mac
if (Ethernet.begin(mac) == 0){
Serial.println("DHCP not initialized! Try again...");
return;
}
//Verificamos conexión
stateNet = Ethernet.maintain();
//Ponemos bandera de parámetros de Red System seteados si cumple alguna condición
if (stateNet == 0 || stateNet == 2 || stateNet == 4)
{
//Obtenemos parámetros de Red
getNetParams();
//Guardamos parámetros de Red
saveNetParams();
//Seteamos configuración por Sistema
EEPROM.write(systemConf, setted);
} else {
//Resetear Bandera de parámetros de System (Tomará DHCP en el próximo Reinicio)
EEPROM.write(systemConf, 0);
}
} else {
//cargar parámetros de red
loadNetParams();
//Configurar el Socket con los parámetros desde la memoria
Ethernet.begin(mac, ip, gateway, gateway, subnet);
}
//Iniciar el Servidor
server.begin();
//Se envían datos de estado de Red y Port a Puerto Serial
Serial.println("Running as " + String(stateNet) + " in port " + String(port) + "!");
}
Я прилагаю снимки двух дел.
Плохой тест с выключателем Encore
Хороший тест с переключателем IntelliNet