Liczba postów: 883
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
14-02-2019, 20:44
(Ten post był ostatnio modyfikowany: 14-02-2019, 20:45 przez Jarewa0606.)
Mam takie zapytanie laika
void setup - to wiadomo
Ale jeżeli sobie skonstruowałem tak:
void loop();{
x();
y();
z();
}
void z(){
kod
}
void x(){
kod
}
void y(){
kod
}
Która kolejność się liczy?? odwołanie w loop czy z góry na dól void z,x,y.... Czy to obojętne i leci wszystko z góry na dół...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 2,371
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
To co masz poniżej loop to definicje funkcji, takie przepisy na ciasto, to co wewnątrz loop to ich wywołanie, czy faktycznie wykorzystanie przepisu - robienie ciasta. Nie ważne jak masz poukładane przepisy na ciasta na półce, upieką się tak jak je zaczniesz wykorzystywać. Możesz mieć nawet tak, że przepis na krem użyjesz w przepisie na ciasto, wtedy kolejność też nie ma znaczenia, przynajmniej w Arduino nie ma znaczenia jak je sobie definiujesz, ale co do zasady powinny być jeszcze deklaracje przed wywołaniem gdzie podajesz tylko nazwę funkcji, typ argumentu i typ zwracanej wartości. Na szczęście Arduino zanim wywali błąd sprawdza czy nie ma tego gdzieś zdefiniowanego już po wywołaniu.
Czyli krótko, ta kolejność z loop się liczy.
Liczba postów: 883
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
Dzięki, a czy definicje funkcji mają być przed setup?? bo widziałem takie przykłady. Odnośnie deklaracji powinna być zaraz pod bibliotekami?
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 2,371
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Najważniejsze byś wiedział, że mają być. Zasada jest taka jak ze zmiennymi, powinny być przed użyciem przynajmniej deklaracje, możesz sobie podzielić bloki programu tak by mieć porządek, dodawanie bibliotek, define, zmienne, obiekty, funkcje, setup, loop, definicje funkcji - jak Ci wygodnie, tak by się nie gubić. Jak kodu przybędzie to i tak trzeba kombinować inaczej.
Liczba postów: 883
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
czyli biorąc powyżej przykład:
void x (int, int);
void y (int); // int to tylko przykład w tym miejscu ma być obiekt, funkcja.
void z(int,int);
void setup(){
}
void loop();{
x();
y();
z();
}
void z(){
kod
}
void x(){
kod
}
void y(){
kod
}
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 2,371
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Na pewno nie może być być tak że w nagłówku masz void x (int, int); a potem piszesz funkcję void x(){kod}. To musi być identyczne, nie możesz obiecywać, że użyjesz dwóch intów jako argumenty, a potem nie podać tego w definicji funkcji, nie możesz zdefiniować funkcji z dwoma argumentami, a przy wywołaniu np. w loop ich nie podać. To musi być wszystko identyczne. Tak samo zwracane wyniki. Nie możesz zrobić funkcji void a potem w ciele funkcji użyć return 5. Już lepiej po prostu pominąć deklarację nagłówków, Arduino to przecierpi, znajdzie, użyje.
Liczba postów: 883
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.