Skocz do zawartości

Program Arduino nie działa. I co dalej?


Gieneq

Pomocna odpowiedź

2 godziny temu, Gieneq napisał:

warto ustawić więcej szczegółów podczas kompilacji

Ja bym to ujął inaczej: bezwzględnie konieczne jest ustawienie "więcej szczegółów podczas kompilacji" i "pokazuj wszystkie ostrzeżenia kompilatora".

Osobiście do początkujących raczej nie należę ale nie wyobrażam sobie jakiegokolwiek sensownego działania z mojej strony, jeśli nie widzę wszystkiego co mi wypisuje kompilator. A co do ostrzeżeń - warto też je poczytać, bo czasem jest tak że co prawda składniowo i semantycznie wszystko wydaje się w porządku, ale kompilator coś podejrzewa (na przykład niezainicjalizowaną zmienną).

Przykład - krótki program w C++:

#include <stdio.h>
int main(void)
{
   int m,n;
   n=m;
   printf("%d\n", m);
}

Program bez włączenia ostrzeżeń pięknie się skompiluje bo przecież żadnych błędów nie zawiera... tymczasem po włączeniu ostrzeżeń mamy:

programik.cpp: In function int main()’:
programik.cpp:4:10: warning: variable n set but not used [-Wunused-but-set-variable]
    4 |    int m,n;
      |          ^
programik.cpp:5:5: warning: m is used uninitialized in this function [-Wuninitialized]
    5 |    n=m;
      |    ~^~

Czyli trzeba!

A poza tym świetnie że coś takiego napisałeś, będzie do czego linkować 🙂

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

To cieszę się i dzięki za uwagi, racja dopiszę. Dobrze byłoby przygotować więcej takich artykułów i zebrać je w formie FAQ, bo jednak wiele z tych tematów się powtarza. Ostatni, który napisałem kilka razy już podlinkowałem, myślę że i ten będzie przydatny.

  • Lubię! 2
Link do komentarza
Share on other sites

1 godzinę temu, Gieneq napisał:

Dobrze byłoby przygotować więcej takich artykułów i zebrać je w formie FAQ

Świetny pomysł! Lepiej dla wszystkich - bo jak debiutant trafi na FAQ to pewnie będzie wiedział gdzie szukać, a parę osób tu obecnych ma serdecznie dość odpowiadania po raz fafnasty na to samo pytanie...

W czymś trzeba pomóc? Czasu mam niewiele, ale może parę minut wyskrobię...

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Od jakiegoś czasu chodzi mi po głowie organizacja pewnej zabawy/konkursu, która polegałaby na tworzeniu modelowych odpowiedzi. Konkretnie widziałem to w taki sposób, że na podstawie tego co pojawia się na forum zbieramy listę częstych pytań. Następnie zakładam konto "bota", który zadaje po jednym pytaniu dziennie (jako nowy temat konkursowy). Każdy może w tym temacie udzielić swoją modelową odpowiedź na takie pytanie (tzn. wyjaśnienie tematu i rozwiązanie problemu). Później takie dyskusje zbieramy w formie FAQ, a osoba, która np. odpowie najlepiej na największą liczbę pytań wygrywa. 

Co o tym myślicie? 😉

Link do komentarza
Share on other sites

25 minut temu, Treker napisał:

na podstawie tego co pojawia się na forum zbieramy listę częstych pytań

Ja mogę podać najczęstsze bez przeglądania forum 🙂

Cytat

Dlaczego mój program nie chce się wgrać na płytkę? Błąd to:


Błąd kompilacji dla płytki Arduino UNO

Ktoś wie?

Podejrzewam jednak, że większość odpowiedzi na to pytanie musiałaby być dostępna wyłącznie po oświadczeniu o pełnoletniości potwierdzonym notarialnie 🙂

Link do komentarza
Share on other sites

Świetny artykuł👍. Fajnie poczytać, że mój sposób samouka na podłączanie i kodowanie każdego podzespołu osobno i po kolei, który daje możliwość szybkiego wyłapania problemu, jest dobrą praktyką:). 

Ja każdy kolejny element podłączam i koduje osobno jednak pamiętając oczywiście jakie konkretnie funkcje będzie pełnił w gotowym programie. Kiedy mam działający kod do obsługi każdego osobnego podzespołu, zaczynam dopiero pisać kod całego programu. Najpierw najważniejszy element i tylko on, działa to ok, potem dopisuję biblioteki i kod z kolejnego podzespołu i sprawdzam czy działa, itd... 

Wtedy szybko wyłapuje się gryzące się biblioteki i inne błędy. Przy poprawkach staram się zapisywać kolejne wersje programu z opisem w nazwie data i godzina, co zrobiłem, zmieniłem itp. Wtedy na pierwszy rzut oka widać która wersja co zawiera i co w niej działa, a co nie bardzo. 

Patent z Serial.print przy dziwnym zachowaniu programu jest oczywiście niezawodny i pozwala łatwo wyłapać np. moje proste błędy nowicjusza. 

To mnie zainteresowało:

7 godzin temu, Gieneq napisał:

nawiązanie do biblioteki lokalnej (przy include zamiast <> mamy "")

co to biblioteka lokalna, a jaka to nie lokalna? 

Edytowano przez SOYER
  • Lubię! 1
Link do komentarza
Share on other sites

17 minut temu, SOYER napisał:

To mnie zainteresowało:

7 godzin temu, Gieneq napisał:

nawiązanie do biblioteki lokalnej (przy include zamiast <> mamy "")

co to biblioteka lokalna, a jaka to nie lokalna? 

Aj, bo @Gieneq żyje w świecie Javy i Pythona 🙂

Uściślę: jeśli argument #include jest ujęty w cudzysłów a ścieżka do pliku nie jest bezwzględna, kompilator będzie go szukał w katalogu w którym znajduje się plik, który go włącza (czyli lokalnie). Jeśli tam nie znajdzie, będzie szukał w miejscach w których powinny znajdować się pliki nagłówkowe bibliotek. Jeśli natomiast będzie ujęty w nawiasy kątowe, będzie go szukać wyłącznie w plikach nagłówkowych bibliotek.

Chodziło prawdopodobnie o sytuację, kiedy pliki biblioteki są umieszczone w folderze szkicu (czyli z punktu widzenia Arduino IDE lokalnie), lub w katalogu Arduino/libraries (czyli jak mniemam nielokalnie). Ot i cała filozofia, tyle że terminologia rodem z innego świata 🙂

Do poczytania: https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html

A najlepiej takie rzeczy czytać przed zadawaniem pytań 😉

 

@Treker - to był przykład zadania pytania przed przeczytaniem podręcznika

Link do komentarza
Share on other sites

Może ja lubię zadawać pytania dla podtrzymania dialogu, sprowokowania do ciekawych wypowiedzi, szukania nowego spojrzenia. 

Pamiętaj, że garstka ludzi chce słuchać, a większość chce być słuchana;)

 

Link do komentarza
Share on other sites

Artykuł świetny, pomysł z konkursem też dobry. Jako nagrodę dla zwycięzcy funduję duże dobre piwo (lub dwa, ale nie jestem na bieżąco z cenami - ostatnio jak byłem to lany speedway stout mniej więcej tyle kosztował), w dobrym pubie, wymiennie na 100zł kupon podarunkowy w Botlandzie.  Jeśli takowego brak, to mam nadzieję że da się to jakoś zorganizować.

  • Lubię! 1
Link do komentarza
Share on other sites

9 minut temu, ethanak napisał:

No przecież domyśliłem się że nie zadajesz takiego pytanie bo tego nie wiesz 🙂

sarkazm niepotrzebny, choć oczywiście domyślam się, że w Twoim przypadku zupełnie niezamierzony😁

Link do komentarza
Share on other sites

6 minut temu, SOYER napisał:

sarkazm niepotrzebny

A emoticona na końcu zdania widziałeś? Ja uznałem, że błąd popełnił @Gieneq wprowadzając jakąś dziwną terminologię...

8 minut temu, bjrk napisał:

w dobrym pubie,

Oj, to chyba zwycięzca zdąży zapomnieć o swoim zwycięstwie zanim puby otworzą 😞

 

Link do komentarza
Share on other sites

12 godzin temu, SOYER napisał:

kodowanie każdego podzespołu osobno i po kolei, który daje możliwość szybkiego wyłapania problemu, jest dobrą praktyką:). 

@SOYER dzięki! Na pewno jest to bezpieczne podejście, gdyby to było pisanie kodu bez sprzętu to błędów można narobić ile się uda, nawet niektóre metody bazują na rozpoczynaniu od błędnego kodu, albo przynajmniej takiego, który nie przechodzi testów obrazujących jego funkcjonalność (TDD czy jakoś tak). Ale kto słyszał o testach w Arduino 😄 pewnie ktoś słyszał.

9 godzin temu, bjrk napisał:

zwycięzcy funduję duże dobre piwo

@bjrk trzymam za słowo 😉 a pandemia nie przeszkadza, niedawno dostałem ciekawą przesyłkę. Pudełko po butach z 2 butelkami ipy domowej produkcji, także jest możliwe.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.