Dlaczego nie mogę wgrać szkicu, gdy inne elementy / urządzenia są podłączone do mojego Uno?

19

Chciałem stworzyć dość prosty obwód, który błyskałby szereg diod LED w sekwencji, używając mojego Arduino Uno (a dokładniej klonu SainSmart). Napisałem mój szkic, który dobrze się skompilował. Następnie podłączyłem 8 rezystorów LEDS + do pinów od 0 do 7, a następnie podłączyłem Uno do mojego komputera przez USB.

W przeszłości pomyślnie przesłałem szkice, więc jestem pewien, że moje ustawienia i sterowniki itp. Są prawidłowe. Jednak gdy tym razem spróbowałem załadować mój szkic, nie zadziałał.

Próbowałem usunąć wszystko, co podłączyłem do pinów Arduino, i nagle przesyłanie znów zaczęło działać.

Dlaczego to się dzieje? Czy to oznacza, że ​​muszę odłączyć wszystko od tablicy za każdym razem, gdy przesyłam szkic?

Peter Bloomfield
źródło

Odpowiedzi:

22

Problemem są w szczególności piny 0 i 1. Chociaż mogą być używane jako zwykłe piny we / wy cyfrowe, służą również jako piny RX i TX dla portu szeregowego Uno. Połączenie USB (do przesyłania szkiców itp.) Jest wewnętrznie kierowane do tych samych pinów. Niestety oznacza to, że wszystko podłączone na stykach 0 i 1 może zakłócać połączenie szeregowe, uniemożliwiając komunikację przez USB.

Krótko mówiąc, nie jest konieczne odłączanie wszystkiego podczas przesyłania szkicu. Konieczne powinno być jedynie odłączenie czegokolwiek od pinów 0 i 1. Zamiast przechodzenia przez to kłopotanie za każdym razem, gdy przesyłany jest szkic, najlepiej jest po prostu unikać używania tych pinów, chyba że jest to konieczne (np. Zabraknie innych pinów lub Twój projekt wymaga połączenia szeregowego z innym urządzeniem).

Peter Bloomfield
źródło
2
Miły sposób na nauczanie społeczności.
JVarhol
2
Ponieważ Arduino jest również programowane przez SPI, który znajduje się na pinach 10-13, możliwe jest również zapobieganie przesyłaniu go na te szpilki
TheDoctor
1
Dobrze napisane pytania i odpowiedzi! Bardzo chciałbym zobaczyć więcej takich postów od ciebie :)
asheeshr
3
@TheDoctor - niepoprawnie! Piny SPI są istotne tylko wtedy, gdy używasz programatora systemowego. Mechanizm programowania bootloader nie wymaga szpilki SPI w ogóle . O ile nie podłączasz oddzielnego, programowego narzędzia programistycznego, nie musisz się tym martwić .
Connor Wolf
0

„Peter R. Bloomfield” Kiedyś przesyłałem szkic do mojego arduino uno, łącząc pin Rx i Tx, ale mój szkic został przesłany. W rzeczywistości problem polega na tym, że sterownik Arduino uno może zostać usunięty

Uttam
źródło
1
To było przeznaczone jako pytanie referencyjne. Ta sama osoba zadała pytanie i odpowiedziała na to pytanie. Wątpię, aby jego problemem było to, że sterownik został usunięty.
Nick Gammon