To już jest koniec…

Zabrzmiało dość pesymistycznie, ale w zasadzie ten tytuł jest efektem kolejnej owocnej współpracy z członkiem społeczności zgromadzonej wokół projektu jakim jest MaSzyna. Poprzedni wpis zakończyłem nieśmiałą nadzieją na uruchomienie ostatniego posiadanego elementu pulpitu, który można podłączyć do logiki symulatora, czyli klapy Ackermana. No i tak się właśnie stało. To kolejny przykład na to, że marzenia się spełniają. W tym wpisie chciałbym rozwinąć trochę tę myśl.

Projekt budowy mojego pulpitu ciągnie się już od około 10 lat. Na początku były nieśmiałe marzenia o tym, żeby podłączyć cokolwiek, co zwiększy realizm symulacji. Wspominałem, że nie jestem ani elektronikiem, ani programistą i to nadal jest prawdą. Mimo przejścia długiej drogi i zdobycia wielu ciekawych doświadczeń nie mogę powiedzieć, że stałem się jednym z nich. Przeglądając opisy pulpitów przytłaczała mnie perspektywa ogarnięcia tematów, o których nie miałem za wiele pojęcia. Zacząłem więc łagodnie, od płytki PoKeys. Pierwsze sukcesy trochę mnie ośmieliły ale im dalej w las tym… jak wiadomo. Pamiętam długie wieczory na urlopowym wyjeździe, kiedy to próbowałem ogarnąć temat możliwości obsługi enkoderów bo zachciało mi się podłączyć w jakiś sposób nastawniki. Zabawne było to, że w końcu odkryłem fakt, że PoKeys ma wbudowaną obsługę tychże i nie muszę kombinować z dodatkową elektroniką. I to się w końcu udało. Nastawniki zaczęły działać, co było ogromnym postępem. Tak , krok po kroku, z krótszymi i dłuższymi przerwami jestem z projektem tu gdzie jestem. Oczywiście zdaję sobie sprawę, że nie jest to realizacja idealna. Pierwotne plany zakładały rozwiązania, których konsekwencje trwają do dziś i już ich się nie pozbędę. Musiałbym przebudować pewne istotne elementy od początku, a na to chyba nie mam już wystarczającej motywacji ani czasu.

Styk załączający działanie hamulca bezpieczeństwa

Wracając do ostatnich zmian, to oczywiście wspomniana klapa Ackermana doczekała się w końcu podłączenia. Nie było to jednak tak proste jak mi się na początku wydawało. Nigdy nie czułem się na siłach ingerować w kod samego symulatora, choć jest to projekt otwarty i każdy, kto chce może to zrobić. W przypadku podłączania klapy okazało się, że jest to jeden z nielicznych elementów, które nie mają uwzględnionej opcji załączenia/wyłączenia oddzielnymi komendami. Nie stanowi to żadnego problemu, gdy steruje się symulacją z klawiatury, jednak jest podstawowym utrudnieniem dla budujących fizyczne pulpity. W związku z tym, że programiści zaangażowani w rozwój symulatora mają ograniczone zasoby, postanowiłem skoczyć na głęboką wodę i spróbować zrobić coś we własnym zakresie. Co mi szkodzi, pomyślałem. Jak się uda to super, a jak nie to trudno. W końcu niczym nie ryzykuję. Zainstalowałem zatem pakiet VisualStudio 2022, pobrałem kod źródłowy symulatora i spróbowałem najpierw skompilować własne exe bez wprowadzania jakichkolwiek zmian. Nie obyło się bez problemów, bo w końcu nie miałem jeszcze do czynienia z tym środowiskiem. Ku mojemu nieukrywanemu zaskoczeniu udało się przewalczyć wszystkie problemy i nowy plik exe pojawił się w lokalnym katalogu. To był dla mnie niebywały sukces. Kolejnym było to, że ten mój plik uruchomił się jak oryginalny. Idąc za ciosem zacząłem przeszukiwać pliki źródłowe w poszukiwaniu jakichś zależności i fragmentów kodu, które mogą umożliwić modyfikację pozwalającą na poprawne działanie wspomnianej klapy Ackermana. No i w końcu tak się stało. Klapa zaczęła działać zgodnie z założeniami. Mogłem otwierać szampana. Kolejny abstrakcyjny dla mnie krok został wykonany.

A tak to wygląda już po zamontowaniu w pulpicie, podczas jazdy.

Jak udało się z klapą to zacząłem próbować zmian związanych z poprawą obsługi radiotelefonu. Tu niestety nie poszło tak gładko, choć w sumie okazało się, że to co zrobiłem i powinno działać, a nie działało nie było związane z błędem kodu, który dodałem, a z przeoczeniem dwóch linijek, których nie dodałem we właściwym miejscu. Rozwiązanie tego błędu jak również dodanie kilku nowych funkcji obsługi radiotelefonu zawdzięczam koledze @marcinn, który zaangażował się mocno w projekt. Bez niego sam nie dałbym rady dodać poprawnej obsługi zmiany kanałów i głośności jak również odbierania informacji o stanie komunikacji radiowej. Dzięki tym kilku nowym lub zmodernizowanym opcjom, radiotelefon zyskał na stabilności działania oraz zwiększenia realizmu. Bezpośrednie przekazywanie wartości o numerze aktualnego kanału jak i pozycji przełącznika głośności powoduje, że nie zaczyna się zawsze od domyślnej wartości i nie ma problemów z gubieniem impulsów. Symulator po prostu dostaje bezpośrednio informację o położeniu przełączników poprzez odpowiedni bajt komunikacji szeregowej. Podobnie dzieje się z przełącznikiem załączenia/wyłączenia samego radia. Informacja o tym, czy występuje aktualnie jakaś komunikacja przez radiotelefon jest wykorzystana do załączania diody LED. Dzięki temu różne komunikaty słyszane przez radiotelefon w trakcie symulacji powodują reakcję tej diody. Mała rzecz, a podnosi realizm.

Na razie tytułowy koniec dotyczy elementów, które można byłoby podłączyć logicznie do symulatora i przesyłać lub odbierać dane poprzez interfejs UART. Mogę się zatem ograniczyć do poszukiwania drobiazgów wyposażenia podnoszącego estetykę i realizm samego pulpitu i modyfikowania kodu Arduino poprawiając jakieś zachowania podłączonych już elementów. Oczywiście liczę również na to, że trochę częściej będę w stanie przejechać jakąś trasę w całości, a nie jedynie testować czy wszystko działa jak należy.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.