logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Języki programowania do sterowania robotem: C, ASM, inne?

danlancher 23 Gru 2005 21:00 4593 62
Najlepsze odpowiedzi

W jakim języku najlepiej pisać program do sterowania robotem i czy taki sam program da się zrobić w C oraz w asemblerze?

Tak — program do sterowania robotem da się napisać w C, ASM albo Bascomie; różnią się głównie wygodą, poziomem kontroli nad mikrokontrolerem i trudnością nauki, a nie samą możliwością realizacji zadania [#2110679][#2111261] Na początek najczęściej polecano C, bo jest względnie proste, ma duże możliwości i pozwala stopniowo poznać rejestry, stos i pamięć mikrokontrolera [#2111261][#2111669][#2171525] Asembler daje największą kontrolę i może dać bardziej optymalny kod, ale pisanie w nim jest żmudne i trudne, więc lepiej zostawić go na później [#2111532][#2171525] Bascom był wskazywany jako dobry start do prostych projektów robotycznych na AVR/8051, bo pozwala szybko uzyskać działający program, choć część osób uważa go za zbyt ograniczający [#2110679][#2171525][#2188369] Jeśli chcesz iść praktycznie w robotyce, forum sugerowało rodzinę AVR jako sensowny wybór na początek [#2110679][#2170997]
Wygenerowane przez model językowy.
  • #1 2110464
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Witam.
    Mam pare pytan,nie bede co raz zaczynal nowego postu.i prosze modelatora o nie wyzucanie tego postu :D bardzo prosze:).Juz jeden napisalem i wyladowal w koszu,posluchalem rad modelatora (ze jest duzo takich tematow jak moj i ze musze szukac) po czym szukalem i.. nie znalazlem.

    Bez owijania w bawelne,odrazu przejde do pytan i mam nadzieje ze uzuskam na nie dokladnych odpowiedzi:)

    1.w jakim jezyku mozna robic jakiego typu programy?tzn.czy np.w c albo asmie mozna zrobic taki sam program do sterowania robotem?
    2.jaki jest najleprzy jezyk do zrobiena programu sterujacego robotem?

    Pytam sie bo nie wiem,a mam zamiar kiedys zrobic jakiegos robota i dlatego chcem sie dowiedziec co nie co zeby sie juz jakos powoli zaczac uczuc:).

    Wiec dziekuje bardzo za odp.

    Pozdrawiam i Wesolych Swiat :)
  • #2 2110679
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    nie można udzielić jednoznacznej odpowiedzi , właściwie każdy jest dobry
    jeżeli zaczynasz i chcesz ograniczyć się tylko do programów prostych związanych z sterowniem robotami to możesz zacząć od Bascoma , dość szybko opanujesz ten język , oczywiście nie jest to idealny język ale na początek jest dobry
    przy ambitniejszych planach pracy z uC to asembler lub C , osobiście polecam rodzinę AVR , programowanie przez ISP , wybór oprogramowania jest duży pod dowolny język Bascom , Asembler , C
    to jest moje zdanie , jednak ilu jest ludzi każdy może zapropnować coś innego , zerknij na tą stronę i zobacz sobie przykłady programów w kilku językach programowania
    http://mikrokontrolery.net/index.htm
  • #3 2111234
    gromnik19
    Poziom 15  
    Posty: 98
    Pomógł: 10
    bogdan_p napisał:
    nie można udzielić jednoznacznej odpowiedzi ,


    Zgadzam sie :]

    Ze swojego doświadczenia powiem tak: Jeśli znasz jakikolwiek język programowania to wg mnie dobrym wyborem jest C, do niego juz tylko krok to C++ i innych bardziej zaawansowanych języków. Bascom jest tylko do mikrokontrolerow (jesli się mylę to niech ktoś mądrzejszy mnie poprawi). Fajnie go znać ale uważam, że wciska ludzi w ślepy zaułek.
    Najlepiej by było jakbyś wziął się za assemblera, bo wtedy nalepiej panuje się nad tym co się w uC dzieje. Jednak wg mnie assembler jest dość trudnym językiem (kilka razy się za niego zabierałem ale zawsze brakowało mi samozaparcia zeby sie go nauczyc ;) ).

    Wesolych swiąt :]
  • #4 2111261
    valarian
    Poziom 22  
    Posty: 647
    Pomógł: 33
    Ocena: 112
    Tak, jak napisali koledzy, punktow widzenia moze byc kilka. Osobiscie polecam pisac na poczatku w C. Bascom odradzam z calego serca, ogranicza myslenie i zmniejsza do minimum wysilek, jaki trzeba wlozyc w zaprogramowanie uC. Moze sie to wydawac dobre, ale jest zupelnie odwrotnie. A C jest jezykiem prostym do nauczenia i o ogromnych mozliwosciach. Jesli juz opanujesz C i bedziesz w pewnym stopniu programowal mikrokontrolery, to mozesz zaczac pisac w Asmie, czesto pomaga i jest szybszy, niz C. Ale na pocztek nie bedzie to konieczne.

    Swoja droga, musiales bardzo slabo szukac, bo takich pytan bylo juz sporo, zwlaszcza na forum o mikrokontrolerach.

    Pozdrawiam i Wesolych Swiat :-)
  • #5 2111491
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Dzieki bardzo:).No to sie zabieram za c++,juz zacząlem :).
    Dzieki jeszcze raz i WESOLYCH SWIAT!!!
  • #6 2111532
    zerpo
    Poziom 22  
    Posty: 463
    Pomógł: 50
    Ocena: 134
    valarian napisał:
    Jesli juz opanujesz C i bedziesz w pewnym stopniu programowal mikrokontrolery, to mozesz zaczac pisac w Asmie, czesto pomaga i jest szybszy, niz C.


    Należałoby tu sprecyzować pojęcie 'szybszy'.
    Samo pisanie w ASM jest dość żmudne i czasochłonne, więc pod tym względem nie uzyskamy tej szybkości. Można jednak uzyskać bardziej optymalny kod programu pisząć w ASM, który może (ale wcale nie musi) działać szybciej.
    ASM z pozoru może się wydawać łatwy, ale pisanie programów w nim jest trudne i wymaga niekiedy akrobatycznych zręczności umysłowych ;-).
    C odciąża nas od wielu tego typu rzeczy. Nie musimy sie właściwie martwić o Stos, adresowanie pamięci, bezpośrednie działanie na rejestrach i nie trzeba walczyć z operacjami arytmetycznymi, których obsługa w ASMie to czasem niezły dziwoląg :D i wiele innych.
    Minus tego taki, że czasem kompilator C może nam zrobić coś po swojemu i program nie bedzie do konca taki, jaki chcieliśmy... W ASMie już takich historii nie ma - to co napiszemy, to będzie i już :D

    Acha! Zaczynać naukę C, a potem wracać się do ASM, to trochę głupota, po co się cofać, jak można iść naprzód?
  • #7 2111623
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Acha! Zaczynać naukę C, a potem wracać się do ASM, to trochę głupota, po co się cofać, jak można iść naprzód?

    to czylilepiej zaczac nauke od Asma?
  • #8 2111648
    zerpo
    Poziom 22  
    Posty: 463
    Pomógł: 50
    Ocena: 134
    danlancher napisał:
    to czylilepiej zaczac nauke od Asma?


    Z jezykami programowania zawsze jest problem. Jeden oferuje to czego inny nie i na odwrót. Wady i zalety. Każdy ma swoje zdanie na ten temat.
    Zajrzyj na forum Mikrokontrolery, jest tam masa dyskusji na ten temat.
    Moim zdaniem jeśli zaczniesz uczyć się C, to już nie będzie sensu wracać do ASM. Jeśli jednak zaczniesz od ASM, to z czasem na pewno przesiądziesz sie na C.
    Poczytaj te dyskusje na forum Mikrokontrolery, i zadecyduj sam.
    Podpowiem tylko, że jak zapoznasz się z podstawami ASM, to nauka mikrokontrolowego C bedzie bardziej zrozumiała...
  • #9 2111669
    valarian
    Poziom 22  
    Posty: 647
    Pomógł: 33
    Ocena: 112
    Dziekuje za sprecyzowanie, zerpo.
    Mimo wszystko polecalbym nauke C na poczatek, pisze sie naprawde dobrze, a w poczatkowej fazie nauki z uC nieistotne raczej sa "kombinacje" kompilatora itp wady. Zaczynanie od razu od ASM moze zniechecic poczatkujacego, tak mi sie wydaje przynajmniej.
    Razem z postepami w nauce C i programowaniu mikrokontrolerow bedziesz poznawal sprzet, jego elementy, co jak dziala [rejestry, stos, pamiec itp.], a mysle, ze dobra znajomosc architektury uC jest podstawa do nauki ASM.
    Tak wiec mozna spokojnie zaczac od C i pisac nawet bardzo skomplikowane programy, a potrzeba znajomosci ASM [i sama jego nauka] wyjdzie "w praniu".

    Pozdrawiam, Wesolych Swiat...
    :-)
  • #10 2113108
    gromnik19
    Poziom 15  
    Posty: 98
    Pomógł: 10
    To ja jeszcze na koniec dodam ze w C mozna robic wstawki asseblerowe, a odwrotnie sie nie da :)
    Poza tym wg mnie nauka ASM jak sie zna C to wacale nie jest cofanie, a wrecz przeciwnie, umiejetnosc tak abstrakcyjnego myslenia jakie jest potrzebne w ASMie to krok do przodu.
    Valerian ma racje ze najpierw nalezy nauczyc sie struktury uC a do tego najlepsza jest praktyka, a najlatwiej praktyke zdobyc w C :]
  • #11 2115199
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    no to ok.C :D

    dzieki,pozdrawiam!
  • #12 2170771
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Witam ,ponownie ja.
    Po dlugim przemysleniu sprawy postanowilem ze lepiej bedzie zaczac od asma :).C nie jest dobry na poczatek.
    Ale tu jest problemik,bo chyba asm jest pod linuksa i dla DOS'a.
    I ptanko mam takie:czy nie ma roznicy jak sie pisze w linuksie czy w dos'ie??
    Bo np.C mozna nim pisam w dosie i normalnie w windowsie...to jak to jest??
  • #13 2170840
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    podaj jaką rodzinę uC wybrałeś 8051, AVR , PIC , AMR .....
    Cytat:
    Ale tu jest problemik,bo chyba asm jest pod linuksa i dla DOS'a.

    istnieją wersje pod kazdy system operacyjny Dos ,Win , Linuks
  • #14 2170929
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    No narazie nie zabieram sie za programowanie bo jeszcze praktycznie nic nie uiem :D ale ludzie gloszą ze AVR jest OK,wiec chyba AVR.
    A nie ma zadnej roznicy w programowaniu u Dos,Win,Linux...?
    Bo z tego co wiem to chyba Linux jest takim bardziej.....no dla profesionalistow itd :D.Moze sie myle nie wiem.
  • #15 2170997
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    jeżeli pracujesz na systemie Windows to po co kombinujesz z Linuksem
    AVR - AWRStudio pracuje pod Widowsem i pisze się w ASM
  • #16 2171103
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Dobry jestes ;) moja technika ,ale na forum sie nie sprawdza....dobra do rzeczy.
    Tylko sie pytalem,a po drugie nie kombinuje w linuksie,tylko sie pytam ;)
  • #17 2171132
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    :arrow: danlancher
    Przeczytaj sobie Kurs asemblera AVR a wiele rzeczy stanie się dla Ciebie bardziej zrozumiałe.
    Jeśli jesteś kumaty w angielskim lub niemieckim to polecam świetny kurs assemblera AVR na stronie http://www.avr-asm-tutorial.net/. Najlepiej ściągnąć całość w PDF-ie i wydrukować. Lepszego nie widziałem.
    Jeżeli używasz systemu Windows to możesz sobie zainstalować AVR-Studio ale to jest ogromny kombajn, który też musisz poznać i nauczyć się w nim poruszać. Ja używam sam kompilator AVRASM z tego kombajnu. Programy piszę w edytorze ASCII i kompiluję z linii poleceń w Total Commanderze (tak robię w pracy bo mam służbowy komputer z Windows XP). W domu używam linuksa i tu robię prawie tak samo: piszę w edytorze ASCII i kompiluję z linii poleceń shell'a kompilatorem avra, tavrasm lub gavrasm. Chyba wszystkie trzy są również w wersji dla DOS/Windows. Jak wpiszesz w Google ich nazwy to znajdziesz je bez problemów.
  • #18 2171470
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 123
    A ja nienawidzę lini komend i linuksa, ale to inna bajka, w jednym się zgadzam, nie należy uczyć się asemblera na wstępie, bo nic się z tego nie zrozumie.

    Co do uC AVR:

    Najszybciej napiszesz program do robota w bascomie, nadaje się do tego idealnie i jest prosty. Może i zwalnia z myślenia, ale efekty pracy są zauważalne natychmiast.

    Sam robie w bascomie softa do nano-sumo, wsadziłem proca który ma 8KB dysku ;) i mało mnie obchodzi czym bascom to zapełnia.

    To ma działać a nie być perfekcyjnie dopracowane, a w robocikach istotniejsze są rozwiązania mechaniki niż zoptymalizowany program.
  • #19 2171525
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Ja osobiście polecam zacząć od C... pod Dosa.

    Powód jest prosty - C jest względnie prostym językiem a kompilując pod Dosa można łatwo zacząć (nie ma żadnego kodu do tworzenia okienek jak w windowsie itd.)
    Można spytać, dlaczego nie zaczynać od mikrokontrolerów... powód banalny - pisząc na kontrolery tak naprawde nie wiemy co program robi, bo nie możemy tego podejrzeć (chyba ze ktoś ma debugger itd.. ale nawet wtedy przeważnie działa to gorzej niż debuggowanie kodu pod Dosa)
    No i właśnie, pod Dosa możemy używac debuggery i profilery do woli, poza tym sam proces kod/kompilacja/debuggowanie jest bardzo szybki.

    Jak już ktoś umie jakieś podstawy C, to można usiąść do mikrokontrolerów (zakładając przynajmniej podstawową znajomość elektroniki analogowej i cyfrowej)

    A na końcu.. assembler, koniecznie. Dopiero wtedy człowiek rozumie co tak naprawde się dzieje, pozwala to też dostrzec możliwości optymalizacji kodu pisanego w C.
    Jest to zupełnie inne spojrzenie na działanie komputera niż spojrzenie programisty C.
    Dla mnie ktoś, kto programuje w C/C++ a nie zna podstaw assemblera i procesora pod który pisze to czasem wygląda jak ślepiec chodzący po omacku... kod napisze, tylko jeżeli będzie potrzebna szybkość działania tego kodu to już z tym nic nie zrobi.
  • #20 2173400
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    No dzieki za dobre rady :).
    Ale od C juz probowalem zaczac,idzie ale powoli.
    Wiec najpierw chyba Assembler.
    Ale...jak kolega McRancor mowil ze programuje w bascomie to moze od niego zaczne.Moze tak bedzie lepiej,na poczatek.Na poczatek moze bedzie dobry a jak da sie w nim aprogramowac mikrokontroler to OK.
    A jakie bascom ma mozliwosci??
  • #21 2173481
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 123
    Praktycznie nieograniczone, poza tym kompiluje asemblera, więc można pisać też w tym języku program.
  • #22 2173672
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    Czyli nie ma goraniczen co do programowania,to moge zrobic jakiego chcem robota i zaprogramowac go tak zeby robil to co ma robic??

    A w bascomie mozna programowac tylko uC rodziny AVR czy nie tylko??
  • #23 2173830
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    Bascom masz na 8051 i AVR
    Inne wersje Basic na uC napewno na 8051, AVR , PIC
  • #24 2174055
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 123
    Najpierw zbuduj, potem będziesz się martwił jak to oprogramujesz
  • #25 2174254
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    to moze basica??sorry ze taki jestem ,ale chcem byc pewny czego sie ucze...:)
    A PIC sa lepsze od AVR??
    Wiem ze troche przysmucam ,ale jak sie wszystkiego dowiem to za jakis czas wpadne na forum z super robocikiem :D.

    Aha,ciagle nie wiem tego czy:
    Np.w basicu,bascomie,c,pascalu....mozna programowac uC,ale mozna robic takie programy do czegos innego??
  • #26 2174599
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 123
    Przeglądnij forum mikrokontrolery.
    Bascom to program, kompilator dialektu basica.
  • #27 2176125
    danlancher
    Poziom 27  
    Posty: 1195
    Pomógł: 13
    Ocena: 47
    A mozesz odpowiedziec dokladniej na moje pytanie??:)
  • #28 2176171
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    rozumię stare przysłowie " kto pyta nie błądzi "
    ale danlancher powinieneś podjąć męską decyzję na co się w końcu decydujesz jak na razie to skaczesz asm , bascom , c , pic , avr , ...... za chwilę ktoś zaproponuje serie st , arm i znowu bedziesz pytał od nowa
    wszystko masz wystaczy poszukać i zdecydować się na coś
  • #29 2176322
    zerpo
    Poziom 22  
    Posty: 463
    Pomógł: 50
    Ocena: 134
    danlancher -> Skaczesz z kwiatka na kwiatek, chcesz zająć sie mikrokontrolerami. Dobrze! Pytanie tylko, czy wiesz cokolwiek na temat elektroniki, bo z Twoich postów wynika, że nie za wiele. To jak jest z tą wiedzą? Jeśli nie bardzo, to ok, możesz sie uczyć programowania uC, popieram nawet, ale po co ta wiedza, skoro nie będziesz umiał złożyć układu w którym to urządzenie będzie pracować..?
    I to co już się wiele razy powtarzało - przegladaj te fora dyskusyjne na elektrodzie, a nie ciągle pytaj i oczekuj odpowiedzi na pytania, które setki razy były już zadawane.
    Potrzeba do tego cierpliwości, w tej dziedzinie nic nie przychodzi od razu, wymaga dużej pracy teoretycznej, która niekiedy nie ejst przyjemna, ale (niestety?) potrzebna...
  • #30 2176334
    daniel93
    Poziom 29  
    Posty: 1673
    Pomógł: 30
    Ocena: 92
    na począ tek avr i bascoma weź

Podsumowanie tematu

✨ Dyskusja dotyczy wyboru języka programowania do sterowania robotem, ze szczególnym uwzględnieniem języków C, asemblera (ASM) oraz Bascoma. Zalecane jest rozpoczęcie nauki od języka C ze względu na jego prostotę, szerokie możliwości i łatwość zdobywania praktyki z mikrokontrolerami, zwłaszcza z rodzin AVR. Asembler jest wskazywany jako język bardziej zaawansowany, pozwalający na optymalizację kodu i pełną kontrolę nad mikrokontrolerem, ale trudniejszy do nauki i mniej zalecany na początek. Bascom, będący dialektem Basica dla mikrokontrolerów 8051 i AVR, jest polecany jako łatwy do opanowania język dla początkujących, choć niektórzy użytkownicy ostrzegają, że może ograniczać rozwój umiejętności programistycznych. Programowanie w Bascomie umożliwia tworzenie programów współpracujących z portami RS232, LPT, USB oraz obsługę podczerwieni (np. kod RC5). Dyskutowano także o wyborze mikrokontrolerów, gdzie popularne są AVR i PIC, z rekomendacją rodziny AVR ze względu na dostępność narzędzi i wsparcie. Poruszono kwestie środowisk programistycznych działających pod różnymi systemami operacyjnymi (Windows, Linux, DOS), podkreślając, że dla AVR dostępne są kompilatory i narzędzia pod wszystkie te systemy. Wskazano na znaczenie praktyki i znajomości elektroniki w nauce programowania mikrokontrolerów oraz na konieczność samodzielnego poszukiwania informacji i literatury. Poruszono również temat programatorów, polecając gotowe zestawy startowe lub programatory takie jak STK200. Autor ostatecznie zdecydował się na naukę Bascoma i planuje dalsze samodzielne zdobywanie wiedzy.
Wygenerowane przez model językowy.
REKLAMA