Artykuły

Po nieco przydługim wstępie – krótka wprawka programowa, bo czymże byłoby Arduino bez oprogramowania? Stwórzmy prościutki sekwencer z jedną frazą, głównie po to, by sprawdzić czy mamy kontakt z instrumentem. Oczywiście potrzebny jest tutaj syntezator z wejściem MIDI, ale jeśli ktoś nie posiada – nie ma tragedii.
…
Przez jakiś czas chciałbym się zająć tematyką MIDI, dodam – niezwykle bliską memu sercu, z którą przyjemność zacząłem mieć jeszcze w późnych latach osiemdziesiątych. Czym jest MIDI? Odpowiedzi są dwie: krótka i długa. Krótko: to język instrumentów muzycznych. Długa… o tym będzie reszta artykułu. Dla mnie osobiście jest to jeszcze podróż sentymentalna, bo z MIDI spotkałem się w drugiej klasie liceum, kiedy to cudem jakimś udało mi się kupić syntezator widoczny powyżej – niech pozory nie mylą, to naprawdę jest syntezator – i bardzo chciałem móc nim sterować za pomocą komputera ZX Spectrum. Ponieważ jednak nie było wsparcia dla tego komputera w dziedzinie MIDI, w każdym razie na krakowskiej giełdzie, sequencer trzeba było sobie napisać samemu. Napisałem wówczas jakąś prostą jego postać, łącznie z okładką ukazującą się podczas wgrywania programu, która ocalała do dziś, więc się nią dzielę.
…
Zegar z sieci należy traktować wyłącznie jako źródło czasu dla zegara lokalnego – ale o tym za chwilę, bo do poprzedniego projektu przydałoby się jeszcze dołożyć kalendarz. To takie proste nie będzie, z jednym wyjątkiem: dniem tygodnia, bo biblioteka go zwraca. W praktycznych rozwiązaniach wystarczy ten element – w ten sposób możemy zbudować na przykład tygodniowy budzik. Dobranie się do dnia, miesiąca i roku wymaga wykorzystania czasu uniksowego, o którym niedawno pisałem, a który tutaj także jest dostępny. Za pomocą rozbudowanych algorytmów można otrzymać te dane, lecz tutaj to zagadnienie pominę.
…
Na koniec serii artykułów o współczesnych źródłach dokładnego czasu koniecznie należy omówić najbardziej dziś oczywisty sposób na posiadanie zegarka, czyli pozyskiwanie czasu z sieci. Oczywiście do takich zadań niezbędne będzie Arduino, które z siecią potrafi się porozumieć, ale dziś to nie problem, bo modułów takich jest mnóstwo. Jak zwykle użyję Arduino Uno R4, lecz od razu dodam, że wcale nie jest to konieczne i zaprezentowane przykłady powinny bez problemu pracować z płytkami bazującymi na ESP32, które zresztą siedzi w nowym Uno.
…
Wrócę jeszcze do sprzętu: jak widać, urządzenie składa się z małej płytki z elektroniką i zwykle odseparowanej na odległość kilkunastu centymetrów anteny, którą należy umieścić na pewnym dystansie, dającym odstęp od zakłóceń, które zawsze pojawiają się, gdy mamy do czynienia ze sprzętem cyfrowym. Z anteną jest związany jeszcze jeden problem: jest silnie kierunkowa. Aby uzyskać w miarę pewny odbiór, trzeba ją ustawić prostopadle do nadajnika. W południowej Polsce pręt powinien pokazywać południe i północ, w północnej należy go nieco odchylić na oś północny zachód – południowy wschód. A najlepiej po prostu skorzystać z mapy i zobaczyć gdzie znajduje się Frankfurt. O tych sprawach często się zapomina i potem zegar nie chce się ustawić przez pół dnia.
…
DCF77 – cóż to jest? Standard znany głównie z nieco pokracznych zegarów, których się nie nastawia, tylko odstawia na jakiś czas, aż ustawią się same. Najczęściej zegary te są składnikami stacji pogody i chyba każdy doświadczył jednocześnie wygody – bo są bardzo dokładne – i problemów z uruchomieniem po wymianie baterii, bo czasem trzeba czekać godzinę i dłużej, zanim z jakiegoś pierwszego stycznia o północy zrobi się prawidłowa data i godzina.
…
Oczywiście GPS powstał do innych celów niż budowa zegarka i kiedyś takie użycie jakże wówczas drogich odbiorników było bezsensowne. Dzisiaj kompletny odbiornik kosztuje grosze. Jednak dzisiejszym bohaterem nie będzie jeden z tysięcy modułów dostępny w sieci, a taki leciwy już odbiornik Garmina, który nie wspiera nawet map. Był moim pierwszym odbiornikiem, który ćwierć wieku temu kupiłem głównie z myślą o byciu dawcą protokołu dla Palma – który już w oparciu o dane z GPS-a mógł wyświetlać zeskanowaną mapę. Było to bardzo nowatorskie, choć dziś wydaje się archaiczne.
…
Skoro już opanowaliśmy wyświetlanie znaków na ekranie telewizora, czas na obrazki. To aż takie proste nie jest, ponieważ potrzebny jest tutaj konwerter – biblioteka nie rozumie żadnych bitmap, plików GIF i tego typu znanych nam elementów. I tutaj z pomocą przychodzi coś, o czym już kiedyś pisałem: strona konwertująca obrazy do postaci zrozumiałej przez bibliotekę. Jednak zanim zajmiemy się tworzeniem własnych grafik, przetestujmy program na gotowcu dostarczonym z biblioteką. Będzie zresztą niezbędny, by stworzyć własną wersję.
…
Od dawna chciałem zgłębić ten temat: Arduino jako karta graficzna, a konkretnie generator obrazu telewizyjnego. Prawdę powiedziawszy, to kolejna odsłona, jak by nie było, ośmiobitowego komputerka, która mnie zaskoczyła: z pomocą tylko dwóch rezystorów powstał komputer meritumopodobny. Owszem, bardzo skromna jest ta grafika, ale do jej generacji wykorzystujemy tutaj wyłącznie to, co znajduje się w układzie ATMega328 i skromniutkie 2 kB RAM-u, a oprócz literek możemy wyświetlać także grafiki i to wcale skomplikowane, korzystające z pełnej rozdzielczości. Cały proces, mimo programowej realizacji, jest niezwykle szybki, pozostawiając moce na własne działania.
…
W poprzednim artykule opisałem zagadnienie zegarów RTC i przedstawiłem przykład: układ DS1302. Czas na nieco nowocześniejszy DS1307. Tutaj mamy już klasyczną magistralę I2C, więc potrzeba tylko dwóch linii do rozmów ze scalakiem. Pominę nieistotne dla nas dodatkowe wyjście, na którym może się pojawić jedna z częstotliwości do wyboru: 1 Hz, 4 lub 8 kHz albo częstotliwość kwarcu. Układ posiada 56 bajtów użytkownika, ale wymaga już pięciowoltowego standardu zasilania. Posiada też stały adres magistrali (dziesiętnie: 104), którego nie da się zmienić.
…