Давно уже сталкивался с этой проблемой, но забросил Ардуино и долго им не занимался, теперь открыл этот форум. Фишка была такая, что я питал Ардуино от лабораторного блока питания, а не от USB. К питанию нареканий быть не может, пробовал разные блоки. Суть проблемы в том, что приложения для Ethernet shield не работали, если плата питалась от БП, но работали, если питалась от USB. Другие приложения работали в обоих случаях. Подробнее проблема описана тут: https://arduino.stackexchange.com/q...-ethernet-shield-with-other-than-computer-usb Видео тут: Возможные версии: 1) в коде есть что-то, что обращается к сериальному интерфейсу и, поскольку его нет, оно не может работать 2) "плохая земля" Вопрос, сталкивался ли кто-то с чем-то подобным?
Скорее всего.А вообще выкиньте этот Шилд вместе с Ардуино и купите за 200 рублей esp8266 в плате node mcu lua и будет Вам щастье и решение проблемы на века!
А зачем прошлый Век?Мошт еще dial up?Вифи нынче в каждом доме.Я тоже лет 10 назад хотел такой шилд.Но пришел esp и всех убил наповал включая Ардуину.
Вопрос сложный, за долгое время эксплуатации ESP8266 поверил в надежность Wi-Fi, до этого не верил. В то же время, использую в подвале и на работе и дома Leonardo ETH, и Меги с Ethernet2 W5500. На работе в другом городе, Leonardo ETH выбран из за надежности. Год как работает без сбоев, по MQTT передает информацию на мой брокер. Не даче тоже Leonardo ETH, тоже без сбоев более года, плюс Мега с Ethernet, тоже без единого сбоя т.т.т.
1) Сериал вообще не причем. 2) Что бы понять что ошибка в коде, сотри все кроме подключение эзернета и при ошибке подключения сделай блинк стандратным пином. 3) И сними все кроме платы + езернет шилда Пример: Код (C++): #include <Ethernet.h> byte mac_addr[] = { 0x78, 0x32, 0x1B, 0x48, 0x3B, 0x4F }; void setup() { pinMode(LED_BUILTIN, OUTPUT); connectToEthernet(); } void loop() { } void connectToEthernet() { if (Ethernet.begin(mac_addr) == 0) { blinkme(); if (Ethernet.hardwareStatus() == EthernetNoHardware) { blinkme(); blinkme(); } else if (Ethernet.linkStatus() == LinkOFF) { blinkme(); blinkme(); blinkme(); } } } void blinkme() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); }
Давным давно забил на все Эзернеты и Вай-Фаи. Платить бабки и быть привязанным к месту !!!. На халяву по случаю, это еще можно. Лет уже 10 сижу на GPRS и не жалею. И выбор операторов, и радиус действия, и цена умеренная.