Dzieje się tak, ponieważ IDE nie ma wystarczających uprawnień, aby uzyskać dostęp do urządzenia Arduino.
Permissions
Możemy zajrzeć do urządzenia Arduino, uruchamiając
ls -l /dev/ttyACM*
w terminalu. Wyjście wygląda przeważnie tak:
crw-rw---- 1 root dialout 166, 0 Des 14 09:47 /dev/ttyACM0
Znak '0′ na końcu 'ACM’ może być inny, a na liście może być wiele wpisów, ale części, na których musimy się skupić, to ciąg liter i kresek z przodu oraz dwie nazwy root
i dialout
.
Nazwa pierwsza root
to właściciel urządzenia, a dialout
to grupa właścicieli urządzenia.
Literki i myślniki z przodu, zaczynające się po literze 'c’, reprezentują uprawnienia dla urządzenia według użytkownika: – Pierwsza trójka rw-
oznacza, że właściciel (root
) może czytać i pisać do tego urządzenia – Druga trójka rw-
oznacza, że członkowie grupy właściciela (dialout
) mogą czytać i pisać do tego urządzenia – Trzecia trójka ---
oznacza, że inni użytkownicy nie mają żadnych uprawnień (co oznacza, że nikt inny nie może czytać i pisać do tego urządzenia)
W skrócie, nikt poza root
i członkami dialout
nie może nic zrobić z Arduino; ponieważ nie uruchamiamy IDE jako root
ani jako członek dialout
, IDE nie może uzyskać dostępu do Arduino z powodu niewystarczających uprawnień.
Dodanie siebie do grupy dialout
Ale czekaj! Wcześniej, gdy uruchamialiśmy IDE, dodaliśmy się do grupy dialout
!
Dlaczego więc IDE nadal nie ma uprawnień dostępu do Arduino?
Zmiany, które wprowadza monit, nie są stosowane, dopóki się nie wylogujemy i nie zalogujemy ponownie, więc musimy zapisać naszą pracę, wylogować się i zalogować ponownie.
Po ponownym zalogowaniu się i uruchomieniu Arduino IDE, powinna być dostępna opcja Serial Port; zmień ją, a powinniśmy być w stanie przesłać kod do Arduino.
.