Po omówieniu modyfikatora volatile w poprzednim wpisie, dzisiaj zajmę się drugim podobnym modyfikatorem – const. Modyfikator const jest często przedstawiany jako sposób deklarowania stałych liczbowych. W artykule wytłumaczę, dlaczego do definiowania pojedynczych stałych liczbowych lepiej nadają się inne mechanizmy oraz jak używać const w deklaracjach funkcji, aby uzyskać lepszą kontrolę typów.
Page 19 of 23
Jak używać modyfikatora volatile
Dzisiaj omówię element składni języka C, który jest rzadko tłumaczony większości kursów. W książce K&R został wspomniany zaledwie w trzech zdaniach, które zupełnie nie sugerowały, że może on być ważny. Chodzi o modyfikator volatile. Jego nieprawidłowe stosowanie może powodować:
- Błędne działanie programu po włączeniu optymalizacji.
- Błędne działanie programów wykorzystujących przerwania lub współbieżność.
- Problemy z obsługą sterowników sprzętu.
- Problemy z wydajnością programu.

Robot jeździ o własnych siłach
Problemem na którym zatrzymałem się ostatnio podczas próby wprawienia robota w ruch (link) było przeniesienie napędu z silnika na koła. Osią obrotu koła jest jest śruba przechodząca przez mocowanie silnika. Jest ona dokręcana za pomocą nakrętki, co widać na poniższym zdjęciu.Kiedy nakrętka jest wkręcona za mocno, występuje opór przy próbie obrotu koła. Zębatka na wale silnika przestaje się wtedy kręcić. Po poluzowaniu śruby, koło dobrze się kręci, ale nakrętka zaczyna się odkręcać i po jakimś czasie wypada. Rozwiązaniem mojego problemu okazał się klej do śrub. Dzięki sklejeniu nakrętki ze śrubą, nie odpada ona podczas obracania się koła. Nie muszę więc tak mocno skręcać śruby i koło może swobodnie się kręcić.
Po zamontowaniu kół i sklejeniu śrub robot mógł w końcu wyruszyć w swą pierwszą trasę. Została ona uwieczniona na filmiku:

Elektronika dla dzieci
Z okazji dnia dziecka postanowiłem napisać artykuł o tym jak można zainteresować dzieci elektroniką i programowaniem. Niestety miałem pewną obsuwę i publikuję dopiero dzisiaj. W tekście opiszę zarówno produkty kierowane do przedszkolaków i uczniów podstawówki, jak i dla starszych – gimnazjalistów czy licealistów. Tematy takie jak elektronika i programowanie uchodzą za trudne. Poza tym szkoła wyrabia przeświadczenie, że nauka czegokolwiek polega tylko na siedzeniu nad książkami, wkuwaniu wzorów i zdawaniu klasówek. Okazuje się, że wcale tak być nie musi. Poznawanie elektroniki może być świetną zabawą. Nie tylko dla dziecka, ale także dla rodzica.

Sprawić, żeby robot zaczął jeździć
Trzy miesiące konkursu „Daj się poznać” już praktycznie minęły i o ile jestem zadowolony z treści, które pojawiły się na blogu, to prace nad rozwojem robota są w szczerym polu. Od początku wiedziałem, że realizacja całego projektu potrwa dłużej niż konkursowe trzy miesiące, ale liczyłem, że będę już trochę dalej. Uświadomiłem to sobie w poniedziałek i wtedy też postanowiłem podjąć się wyzwania – do końca maja (czyli w 3 dni) miałem sprawić, żeby robot zaczął jeździć. Z tego powodu w ostatnich dniach solidnie popracowałem nad projektem. Tym bardziej, że przed trzema dniami wyzwania miałem jeszcze owocny weekend z OctoPrint i drukarką 3D. Na zdjęciu puszczony na telewizorze kolejny odcinek serialu „Bootowanie Raspberry Pi”.

M3D – problemy z kalibracją
We wpisie dotyczącym pierwszych odczuć związanych z drukarką 3D (link) chwaliłem soft dołączany do M3D za prostotę obsługi, możliwość łatwego poznania wszystkich opcji i ogólnie krótkiego czasu potrzebnego na wdrożenie się. Jednak ostatnio, gdy próbowałem wykonać kalibrację backlash, miałem okazję poznać jego wady. Okazało się, że soft niebardzo nadaje się do bardziej zaawansowanych operacji. Niektóre opcje są po prostu zbugowane i nie działają w ogóle. Dojście do tej konkluzji zajęło mi trochę czasu i dzisiaj opiszę problemy jakie napotkałem.

Trójmiejski Turniej Robotów – relacja – część 2
Przyszła pora na drugą część relacji z Trójmiejskiego Turnieju Robotów (TTR). Dzisiaj skupię się na konkurencjach Line Follower i Sumo.

Trójmiejski Turniej Robotów – relacja – część 1
W sobotę 20 maja na Politechnice Gdańskiej odbyła się dziewiąta edycja Trójmiejskiego Turnieju Robotów (TTR). Większość ludzi oglądających to wydarzenie na żywo może nie zdawać sobie sprawy z różnych szczegółów technicznych dotyczących robotów startujących w zawodach. Pomyślałem więc, żeby dokładniej opisać zastosowane rozwiązania, decyzje projektowe i trudności do pokonania kryjące się za poszczególnymi konstrukcjami. Postaram się również przybliżyć specyfikę poszczególnych konkurencji i omówić najczęściej stosowane taktyki. Materiału mam dosyć sporo, dlatego podzielę relację na dwie części. Dzisiaj skupię się na robotach z kategorii Freestyle. Natomiast konkurencje Line Follower, Sumo i Micromouse zostaną omówione w kolejnym odcinku.

Drukarka 3D – pierwsze wrażenia
Drukarkę 3D mam już od jakiegoś czasu, w końcu przyszła więc pora, żeby się nią trochę pobawić. W tym tygodniu zrobiłem swoje pierwsze wydruki. Drukarka chodziła codziennie drukując części od felg do robota. Pierwsze wrażenia z jej używania zebrałem w niniejszym poście.

Funkcje debugowe i sterownik silników
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.