Ostatnio udało się trochę pchnąć do przodu prace nad softem. Dorobiłem prototypy funkcji debugowych i interfejsu użytkownika, a także napisałem sterownik silników, który następnie przetestowałem na robocie. Okazało się, że na płytce PCB jednak znajdowały się błędy. Zmiany w kodzie zostały wrzucone na GitHub, pojawiły się tam też pierwsze wpisy do Issue Trackera.
Kategoria: Daj się poznać 2017
Jak używać dyrektywy #define
W dzisiejszym artykule omówię element składni języka C, jakim jest dyrektywa preprocesora #define. Nie będzie to tekst przeznaczony dla początkujących. Skupię się raczej na bardziej zaawansowanych zastosowaniach, przydatnych sztuczkach i dobrych praktykach.
DSP2017 – podsumowanie po 10 tygodniach
Dzisiaj wróciłem z majówki. Z jednym wyjątkiem na poprzedni wpis miałem 9 dni przerwy od wszystkich codziennych zajęć włącznie z pracą, pisaniem bloga i rozwijaniem projektu micromouse. Po takim resecie trudno mi zagłębić się w techniczne niuanse i napisać posta o jakiś skomplikowanych rzeczach. Tym bardziej, że w ostatnim czasie nie robiłem nic związanego z projektem i nie miał bym nawet o czym pisać. Na szczęście znalazłem temat zastępczy. Dzisiaj mija dziesiąty tydzień konkursu Daj się poznać i tym wpisem udało mi się spełnić wymogi konkursu. Przyszedł więc czas na małe podsumowanie.
Budowanie szkieletu aplikacji
Zgodnie z założeniami, które nakreśliłem we wpisie o architekturze systemu, zabrałem się do projektowania prototypów funkcji poszczególnych bloków. Dzięki temu mogę zbudować szkielet aplikacji przechodzący przez wszystkie warstwy i stopniowo wypełniać go kodem. Główny nacisk położyłem na driverach powiązanych z warstwą sprzętową. Zależy mi na szybkim zaimplementowaniu driverów, żeby można było przetestować poprawność pracy poszczególnych podzespołów na docelowej płytce. Poza tym hardware jest najbardziej zależny od rzeczy narzuconych odgórnie i dobrze jest sprawdzić jak najszybciej, czy planowana koncepcja jest na pewno realizowalna. Zaktualizowany kod znajduje się na GitHubie projektu na gałęzi dev.
Lutowanie płytki
Płytki PCB mam już od jakiegoś czasu, elementy też, ale dopiero ostatnio znalazłem trochę czasu, żeby to wszystko polutować. Tak więc lutownica w dłoń i do dzieła!
Nowa zabawka
Nad kupnem drukarki 3D zastanawiałem się już od dłuższego czasu, ale do tej pory na zastanawianiu się kończyło. Moim zdaniem jest to technologia przyszłości i za kilkanaście lat będzie tak popularna jak zwykłe drukarki. Takiego przekonania nabrałem oglądając reklamówki, na których gospodynie domowe drukowały sobie foremki do ciast. Kiedy więc ostatnio pojawiła się okazja kupienia po znajomości używanej drukarki Micro3D, nie musiałem się długo zastanawiać.
Architektura systemu
Koncepcję robota opisałem już jakiś czas temu i od razu zabrałem się za realizacje hardware. Soft na razie został zepchnięty na dalszy plan, ale powoli to się zmienia. W ramach przygotowań do implementacji postanowiłem więc określić architekturę systemu. Jako, że to projekt po godzinach, nie ma żadnych narzuconych procedur dotyczących dokumentacji. Nie oznacza to jednak, że ma jej w ogóle nie być. Założenie jest takie, żeby pisać tylko tyle dokumentacji ile jest w danej chwili potrzebne i żeby rosła razem z postępem prac. W tej kwestii projekt potraktuję jako poligon doświadczalny.
Konfiguracja Travis-CI – Runda 2
Ostatnio pisałem o walce z konfiguracją Travis-CI. Po kolejnych 30 próbach w końcu udało mi się go skonfigurować tak jak chciałem. Przy okazji musiałem pokonać kilka problemów, które opiszę w tym poście.
Przyszły płytki do robota
Dawno nie było nic o postępach prac nad robotem. Pora to zmienić. Tym bardziej, że ostatnio odebrałem gotowe płytki PCB.
Zamówiłem trzy płytki z czarną soldermaską. Za czarny kolor trzeba było dopłacić, ale moim zdaniem było warto, bo dzięki temu robot będzie się lepiej prezentować. Gotowe płytki wyglądają tak:
Git i znaki końca linii
Ostatnio w pracy miałem pewien problem dotyczący znaków końca linii w Gicie. Skłoniło mnie to do poszukiwań w internecie, a zdobyte informacje postanowiłem zebrać w tym poście, żeby zostały na przyszłość.
Znaki końca linii na różnych systemach operacyjnych
Istnieją dwie konwencje dodawania znaków końca linii w plikach tekstowych. Wywodzą się one z dwóch głównych systemów operacyjnych:
- Konwencja Windowsowa: na końcu linii dodawane są znaki CR (Carriage Return – 0x0A ASCII) LF (Line Feed – 0x0D ASCII).
- Konwencja Linuksowa: na końcu linii dodawany jest tylko znak LF.
Jeżeli więc nad tym samym projektem pracują osoby używające różnych systemów operacyjnych, pliki tworzone przez różne osoby mogą mieć różne konwencje końca linii. Co więcej, jeśli plik z linuksowymi znakami nowej linii jest edytowany w Windowsie, edytor tekstu może nadpisać istniejące znaki nowej linii w całym pliku lub użyć swojej konwencji dla nowo dodanych linii.