Отключить экран Ethernet
Я пытаюсь использовать Ethernet Shield и EasyVR (распознавание голоса) вместе. Экран Ethernet использует те же контакты, что и EasyVR, но easyVR работает нормально, если я не вызываю Ethernet.begin(). Есть ли способ отключить сетевой экран, чтобы снова использовать EasyVR?
Я не встречал в классе Ethernet таких методов, как "освобождение" или "отключение".
Спасибо!
@Gonzalo Solera, 👍5
Обсуждение1 ответ
Вы правильно определили корень проблемы, оба шилда пытаются использовать одни и те же пины. Чтобы обойти это, нам нужно знать, какие контакты используются и для чего.
Документация Ethernet Shield раскрывает следующее:
Плата Arduino обменивается данными с шилдом по шине SPI. Это цифровые контакты 11, 12 и 13 на Uno и контакты 50, 51 и 52 на Mega. На обеих платах контакт 10 используется как SS. На Mega аппаратный контакт SS, 53, не используется для выбора микросхемы контроллера Ethernet, но его необходимо оставить в качестве выхода, иначе интерфейс SPI не будет работать.
https://www.arduino.cc/en/Reference/Ethernet
Документация к библиотеке Sparkfun EasyVR не столь явна, но один из примеров дает нам еще одну подсказку:
#if defined(__SAMD21G18A__)
// Экранная перемычка на HW (для нуля используйте порт программирования)
#define port SERIAL_PORT_HARDWARE
#define pcSerial SERIAL_PORT_MONITOR
#elif defined(SERIAL_PORT_USBVIRTUAL)
// Shield Jumper на HW (для Leonardo и Due используйте Native Port)
#define port SERIAL_PORT_HARDWARE
#define pcSerial SERIAL_PORT_USBVIRTUAL
#else
// Экранирующая перемычка на SW (используя контакты 12/13 или 8/9 в качестве RX/TX)
#include "SoftwareSerial.h"
SoftwareSerial port(12, 13);
#define pcSerial SERIAL_PORT_MONITOR
#endif
#include "EasyVR.h"
EasyVR easyvr(port);
EasyVR-Arduino/examples/TestEasyVR/TestEasyVR .ино
Этот блок кода определяет, как настроить последовательную связь. Первые два оператора if предназначены для разных плат, а третий настраивает последовательное соединение программного обеспечения... и говорит, что есть два варианта: контакты 12/13 ИЛИ 8/9! Если есть два варианта, должен быть способ переключить его на самой плате.
И обязательно! Обратите внимание на белую коробку с надписью «SW Serial Pins». Джекпот!
Вот что говорится в руководстве:
На нижней стороне платы есть два резистора SMD, которые можно перемещать, чтобы выбрать два контакта Arduino, к которому EasyVR будет подключен в последовательном программном режиме (перемычка режима на SW).
- RX – контакт программного последовательного приемника.
- D12 – использовать цифровой контакт 12 в качестве последовательного приемника (по умолчанию).
- D8 – используйте цифровой контакт 8 в качестве последовательного приемника.
- TX – контакт программного последовательного передатчика
- D13 — использовать цифровой контакт 13 в качестве последовательного передатчика (по умолчанию)
- D9 — использовать цифровой контакт 9 в качестве последовательного передатчика.
Выбор контактов 12–13 сохранен для обратной совместимости с предыдущими аппаратными версиями Щит EasyVR. Однако эти контакты также могут использоваться для интерфейса SPI, поэтому другой выбор контактов 8- 9 предоставляется. Если вы хотите использовать другие контакты, убедитесь, что контакт приемника поддерживает прерывания изменения.
вопрос из 2015 года, когда у EasyVR были только контакты 12 и 13 для SW Serial, @Juraj
Я взволнован, потому что этот вопрос появился в разделе «без ответа», но вы совершенно правы. Я не знала, что ему 3 года. :-/, @djbeadle
- Разбор HTTP с аутентификацией в Arduino + Ethernet Shield
- Ethernet Shield не работает с TFT-экраном
- Разъем Ethernet препятствует добавлению экранов
- SD-карта не инициализируется
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Клиент MQTT на Arduino + SIM900
- Как отправить данные из Arduino Uno с SIM900 GPRS в Firebase
- Отправка текстового сообщения через Wi-Fi-shield Arduino
EasyVR использует только контакты 0 и 1 (UART) (или 12 и 13, если выбран SW-serial). Экран Ethernet, похоже, вообще их не использует (только SPI и несколько других цифровых контактов). Кажется более вероятным, что две библиотеки конфликтуют друг с другом., @Gerben
Ой! хорошо спасибо!. Но это работает, если я импортирую все необходимые библиотеки. easyvr перестает работать, когда я впервые использую Ethernet. Поэтому мне интересно, смогу ли я отключить экран Ethernet после его использования. Спасибо, @Gonzalo Solera
Что происходит после вызова Ethernet.begin()? Кроме того, вы уверены, что на вашей плате достаточно памяти?, @Anonymous Penguin