Arduino
W tym dziale znajdziesz kurs programowania ARDUINO oraz artykuły opisujące różne wykonane przez nas projekty. Wkrótce również projekty wykonane z wykorzystaniem mikrokontrolerów ATMEGA (niekoniecznie na płytce ARDUINO). Zapraszamy do lektury oraz dzielenia się uwagami.
Commodore Amiga to komputer, który czasy świetności ma już za sobą. Mało kto kojarzy, że w ogóle istniał taki komputer. Do dzisiejszego dnia są jednak ludzie, którzy z nostalgią uruchamiają trzydziestoletnie urządzenia, żeby przypomnieć sobie czasy młodości;) Naturalne zużycie sprzętu powoduje, że kolejne podzespoły odmawiają posłuszeństwa. Najbardziej narażone na uszkodzenia są mysz oraz klawiatura jako urządzenia mechaniczne. W poniższym artykule opiszę w jaki sposób podłączyć myszkę PS/2 do naszej przyjaciółki.
Dawno, dawno temu... w czasach, gdy rozpoczynałem swoją przygodę z komputerami, podstawowym wyposażeniem gracza był joystick. Takie nieduże sprytne urządzenie, które umożliwiało sterowanie postaciami z gier w sposób wygodny, dokładny i przede wszystkim nie niszczyło cennej klawiatury komputera. Joystick był obsługiwany przez komputery Atari, Commodore, czy nawet Sinclair (z dodatkowym interfejsem). Komputery PC jako profesjonalne kalkulatory długo musiały czekać na swoje gamepady i inne urządzenia uprzyjemniające rozrywkę. Dzisiaj czasy się trochę zmieniły, PC-ty to w warunkach domowych rozbudowane konsole do gier, a o Amidze, czy ZX Spectrum prawie nikt już nie pamięta... prawie.... W poniższym artykule pokażę jak w prosty sposób wykonać interfejs umożliwiający podłączenie joysticka od Amigi do współczesnego komputera i przenieść się na chwilę do początku lat 90-tych dwudziestego wieku ;)
Otrzymałem ostatnio maila z prośbą o przybliżenie tematu "wielozadaniowości" w Arduino. Autor listu szukał rozwiązania pozornie prostego problemu, mianowicie kontroli i sterowania jednocześnie wieloma wejściami/wyjściami naszego układu. Arduino posiada system przerwań (a raczej mikrokontrolery Atmela taki system posiadają), ale przerwania mogą być wywoływane przez konkretne zdarzenia, co nie zawsze daje zamierzony efekt. Jednym z sygnałów przerwań może być port szeregowy, którego asynchroniczną obsługę pokazałem w innym artykule. Co jednak zrobić, gdy chcemy mieć wpływ na współbieżną pracę wielu elementów systemu podłączonych do portów Arduino? Postaram się wyjaśnić to zagadnienie poniżej.
Do napisania tego artykułu skłonił mnie osobiście zmarnowany czas na "walkę z wiatrakami", a dokładnej z różnymi wersjami naszego ulubionego urządzenia;) Wszystko wydawało się lekkie, łatwe i przyjemne do czasu, gdy kupiłem układy Arduino Nano wyposażone w układ scalony CH340G. Do tej pory pracowałem na modelach Uno oraz Pro Mini i nie zdawałem sobie sprawy (pewnie jak wielu innych użytkowników) ze specyfiki działania poszczególnych układów. Przejdźmy do konkretów. Zbudowałem sterownik, który kontroluje pewne urządzenia w domu (potrafi włączyć oświetlenie ledowe po zmroku i wyłączyć je o świcie, kontroluje temperaturę wody CWU i steruje pompą cyrkulacyjną, zdalnie włącza drukarkę sieciową, gdy chcę coś wydrukować). Sterownik pracuje autonomicznie, ale czasem trzeba się z nim połączyć, żeby zmienić parametry, lub wykonać konkretną akcję (włącz/wyłącz). Przetestowałem pomysł na Arduino UNO, wszystko zgodnie z założeniami zadziałało, więc postanowiłem zbudować gotowy sterownik w oparciu o Arduino Nano. No i się zaczęło. Program przeniesiony do mikrokontrolera działał, ale komunikacja z komputerem nagle przestała działać. Diody sygnalizujące transmisję radośnie świeciły podczas komunikacji, ale efektu w postaci wykonanego polecenia, czy odczytanych danych nie było...
W dokumentacji do Arduino można znaleźć dokładny opis sposobu przesyłania danych z wykorzystaniem portów szeregowych. Problem w tym, że są to informacje, połowiczne. Prawie każdy kurs programowania Arduino, który znalazłem w sieci kończy się na pokazaniu, w jaki sposób przesłać dane z wykorzystaniem wbudowanego terminala w ArduinoIDE. Jest to oczywiście lekkie, łatwe i przyjemne. Co ma jednak zrobić ktoś, kto chciałby wykorzystać Arduino w swoim projekcie na poważnie? Komunikacja z Arduino z poziomu własnej aplikacji jest możliwa, jednak nie jest to już takie łatwe i oczywiste, jak by mogło się wydawać po lekturze działu „transmisja szeregowa”.
W poniższym artykule postaram się opisać niezbędne elementy umożliwiające wymianę danych z mikrokontrolerem, problemy związane z transmisją danych oraz sposoby ich rozwiązania. Na koniec przedstawię przykładowe rozwiązanie komunikacji czyli kod aplikacji dla Arduino oraz program dla PC.