Pytanie:
Odłącz Ethernet Shield
Gonzalo Solera
2015-07-05 16:43:18 UTC
view on stackexchange narkive permalink

Próbuję używać razem osłony Ethernet i EasyVR (rozpoznawanie głosu). Osłona sieci Ethernet używa tych samych pinów co EasyVR, ale easyVR działa dobrze, jeśli nie wywołam Ethernet.begin (). Czy istnieje sposób na odłączenie osłony sieci Ethernet, aby móc ponownie korzystać z EasyVR?

Nie widziałem żadnej metody typu „release” lub „discect” w klasie Ethernet.

Dzięki!

EasyVR wykorzystuje tylko piny 0 i 1 (UART) (lub 12 i 13, jeśli wybrano SW-serial). Wydaje się, że ekran Ethernet w ogóle ich nie używa (tylko SPI i kilka innych pinów cyfrowych). Wydaje się bardziej prawdopodobne, że dwie biblioteki są ze sobą w konflikcie.
O! ok, dzięki!. Ale działa, jeśli zaimportuję wszystkie potrzebne biblioteki. Easyvr przestaje działać, kiedy używam Ethernetu po raz pierwszy. Zastanawiam się więc, czy po użyciu mogę odłączyć osłonę Ethernet. Dzięki
Co się dzieje po wywołaniu Ethernet.begin ()? Czy na pewno masz wystarczająco dużo pamięci?
Używam tego samego systemu, jak mogę zdefiniować nowe porty dla easyVR? Dzięki.
Jeden odpowiedź:
djbeadle
2018-11-29 23:05:51 UTC
view on stackexchange narkive permalink

Prawidłowo zidentyfikowałeś źródło problemu, obie tarcze próbują używać tych samych pinów. Aby obejść ten problem, musimy wiedzieć, które szpilki są używane i do czego.

Dokumentacja Ethernet Shield ujawnia, co następuje:

Płyta Arduino komunikuje się z ekranem za pomocą magistrali SPI. Dotyczy to cyfrowych pinów 11, 12 i 13 w Uno i pinów 50, 51 i 52 w Mega. Na obu płytach pin 10 jest używany jako SS. W Mega sprzętowy pin SS, 53, nie jest używany do wyboru układu kontrolera Ethernet, ale musi być zachowany jako wyjście, w przeciwnym razie interfejs SPI nie będzie działał.

https://www.arduino.cc/en/Reference/Ethernet

Dokumentacja biblioteki Sparkfun's EasyVR nie jest tak wyraźna, ale jeden z przykładów daje nam kolejną wskazówkę:

  #if define (__ SAMD21G18A__) // Shield Jumper on HW (dla Zero użyj portu programowania) #define port SERIAL_PORT_HARDWARE #define pcSerial SERIAL_PORT_MONITOR # elif określony (SERIAL_PORT_USBVIRTUAL) // Shield Jumper na HW (dla Leonardo i Due użyj portu natywnego) # zdefiniuj port SERIAL_PORT_HARDWARE # zdefiniuj pcSerial SERIAL_PORT_USBVIRTUAL # else // Shield Jumper na SW (używając pinów 12/13 lub 8/9 jako 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.ino

Ten blok kodu określa, jak skonfigurować komunikację szeregową. Pierwsze dwie instrukcje if dotyczą różnych kart, ale trzecia konfiguruje połączenie szeregowe oprogramowania ... i mówi, że są dwie opcje, piny 12/13 LUB 8/9! Jeśli są dwie opcje, musi istnieć sposób, aby przełączyć go na samej karcie.

enter image description here

I na pewno! Sprawdź to białe pudełko z napisem „SW Serial Pins”. Jackpot!

Oto, co podręcznik ma do powiedzenia:

W dolnej części płytki znajdują się dwa rezystory SMD, które można przesunąć, aby wybrać dwa piny Arduino, do których zostanie podłączony EasyVR w trybie szeregowym oprogramowania (zworka trybu na SW).

  • RX - pin programowego odbiornika szeregowego
    • D12 - użyj cyfrowego pin 12 jako odbiornika szeregowego (domyślnie)
    • D8 - użyj cyfrowego pin 8 jako odbiornika szeregowego
  • TX - Nadajnik szeregowy oprogramowania pin
    • D13 - Użyj cyfrowego pinu 13 jako nadajnika szeregowego (domyślnie)
    • D9 - Użyj cyfrowego pinu 9 jako nadajnika szeregowego

Wybór pinów 12-13 jest utrzymywany w celu zapewnienia zgodności wstecznej z poprzednimi wersjami sprzętu EasyVR Shield. Jednak te piny mogą być również używane do interfejsu SPI, więc dostępny jest inny wybór pinów 8-9. Jeśli chcesz używać różnych pinów, upewnij się, że pin odbiornika obsługuje przerwań zmiany.

pytanie pochodzi z 2015 roku, kiedy EasyVR miał tylko piny 12 i 13 dla SW Serial
Jestem podekscytowany, ponieważ to pytanie pojawiło się na „bez odpowiedzi”, ale masz całkowitą rację. Nie zdawałem sobie sprawy, że ma 3 lata. : - /


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...