Poznajemy nakładkę Sense HAT Wyświetlanie tekstu i obrazów na matrycy LED Sense HAT jest płytką nakładkową do minikomputera Raspberry Pi, którą stworzono na potrzeby konkursu Astro Pi. Stanowi ona fundamentalny element Waszej misji Astro Pi. Płytka daje możliwość zbierania różnego rodzaju informacji i wykorzystuje matrycę LED. W tym zestawie zadań, zapoznasz się ze sprzętem Sense HAT i jego biblioteką Python. Dowiesz się, w jaki sposób sterować matrycą LED i wyświetlać informacje wizualne. Potrzebny sprzęt o o o o o Zestaw Astro Pi Monitor Klawiatura USB Mysz USB Wkrętak Zadanie 1 Montaż nakładki Sense HAT Dwa wzmocnione minikomputery Raspberry Pi wysłane na Międzynarodową Stację Kosmiczną (ISS) wyposażono w płytki nakładkowe Sense HAT (Hardware Attached on Top), podobne do tych, które znajdują się w zestawie. Płytka ta daje minikomputerowi Raspberry Pi możliwość zbierania różnego rodzaju informacji, takich jak temperatura lub przyspieszenie, a także wyświetlania danych na specjalnej matrycy LED o wymiarach 8x8. Na pokładzie ISS nie ma możliwości podłączenia minikomputera Raspberry Pi do monitora, dlatego matryca ta jest jedynym sposobem na wyświetlenie informacji wyjściowych. Rysunek 1 Astro Pi Ed na stacji ISS W tym zadaniu zamontujesz nakładkę Sense HAT i poznasz jej możliwości. Ćwiczenie
1. Nakładka Sense HAT znajduje się w srebrnej torebce antystatycznej i zawiera następujące elementy: 4 sześciokątne tulejki dystansowe 8 wkrętów M2,5 Przed dalszymi czynnościami należy upewnić się, czy wszystkie one znajdują się w zestawie. 2. Zamocujemy teraz nakładkę Sense HAT na minikomputerze Raspberry Pi. Czynność tę należy wykonać przy wyłączonym minikomputerze Raspberry Pi, po odłączeniu od sieci zasilającej i odłączeniu wszystkich innych kabli. 3. Przykręć sześciokątne tulejki dystansowe do minikomputera Raspberry Pi, przekładając wkręty od dołu i obracając tulejki palcami (Rysunek 2). Rysunek 2 Sposób montażu nakładki Sense HAT na minikomputerze Raspberry Pi 4. Następnie wprowadź nakładkę Sense HAT do kostki wielostykowej złącza wejścia/wyjścia ogólnego przeznaczenia (GPIO). Narożne otwory należy wyrównać z sześciokątnymi tulejkami dystansowymi.
5. Dokończ montaż instalując pozostałe wkręty od góry. 6. Posługując się niewielkim wkrętakiem, dokręć poszczególne narożne tulejki dystansowe. Nie muszą one być szczególnie mocno dokręcone - tylko w stopniu zapewniającym unieruchomienie nakładki HAT. 7. Jesteśmy gotowi do włączenia i uruchomienia Astro Pi! Zadanie 2 Halo! Tu Ziemia! Matryca LED nakładki Sense HAT służy do wyświetlania kształtów, ikon oraz wiadomości dla załogi stacji ISS. W tym zadaniu uruchomisz swój pierwszy program wykorzystujący nakładkę Sense HAT i wyślesz wiadomość do astronautów na pokładzie ISS. Ćwiczenie 1. Otwórz środowisko Python 3 klikając logo Raspberry u góry ekranu. W wyświetlonym Menu wybierz Programming > Python 3. Spowoduje to pojawienie się okna powłoki Python. Wybierz File > New File i wpisz poniższy kod w nowym oknie.
2. Wybierz File > Save As i wybierz nazwę dla swojego programu, a następnie wybierz Run > Run module. Twoja wiadomość powinna pojawić się jako biały tekst przewijany na matrycy LED. 3. Możesz również dodać parametr prędkości przewijania. Skopiuj i uruchom następujący kod: 4. Matryca LED może również wyświetlać pojedyncze znaki, zamiast całej wiadomości. Służy do tego polecenie sense.show_letter. Otwórz nowy plik i wpisz następujący kod: 5. Zapisz swój kod i uruchom go. Co on robi?
Zadanie 3 Jak działają kolorowe wyświetlacze? Matryca LED nakładki Sense HAT zawiera 64 wielokolorowe diody LED. Wewnątrz każdej z 64 diod LED znajdują się trzy mniejsze diody LED: czerwona, zielona i niebieska - tak samo, jak w ekranie telewizora lub smartfonu. W tym zadaniu dowiesz się, jak w układach elektronicznych działają kolorowe wyświetlacze oraz w jaki sposób użyć kolorowych diod LED do wyświetlania wiadomości. Ćwiczenie 1. W addytywnym mieszaniu barw, kolory czerwony, zielony i niebieski służą do tworzenia innych kolorów. Są one nazywane trzema addytywnymi barwami podstawowymi. Rysunek 3 przedstawia trzy reflektory jednakowej jasności - jeden dla każdej barwy. Kolor czarny uzyskiwany jest, gdy nie występuje żadna barwa. a) Jaki kolor uzyskuje się poprzez połączenie dwóch barw? Określ je. b) Jaki jest wynik dodania trzech barw podstawowych? Rysunek 3 - Addytywne mieszanie barw 2 - Można uzyskać jeszcze więcej kolorów poprzez zmienianie jasności trzech użytych barw podstawowych. Otwórz nowe okno Python 3 i wpisz poniższy kod.
Wybierz File > Save As i wybierz nazwę dla swojego programu. Następnie wybierz Run > Run Module. Jaki kolor został wyświetlony na matrycy nakładki Sense HAT? 3. Zmienne r, g i b odpowiadają kolorom czerwonemu, zielonemu i niebieskiemu. Zawarte w nich liczby określają jasność poszczególnych kolorów i mogą należeć do przedziału od 0 do 255. W powyższym kodzie użyto maksymalnej wartości (255) dla każdej z barw. Zmień wartości, określając 255 dla barwy czerwonej, lecz 0 dla barwy zielonej i 0 dla barwy niebieskiej, a następnie ponownie uruchom kod. Jakie inne kolory możesz stworzyć? 4. Ten system mieszania barw jest wykorzystywany w całym module programowania Astro Pi. Mieszanie barw można wykorzystać z dobrym skutkiem w programowaniu przewijanego tekstu. Wpisz w nowym pliku następujący kod: Zwróć uwagę na składnię: text_colour=(255, 0, 0) - nie zapomnij o przecinkach! 5. Można również zmodyfikować kolor tła wiadomości w następujący sposób: Uwaga: Przecinki są ważne - nie zapomnij o nich!
6. Aby ułatwić odczytanie wyświetlacza zajętym astronautom, utwórz wiadomość wykorzystując kontrastujące ze sobą kolory po przeciwnych stronach koła barw. Czy potrafisz zrobić, żeby wiadomość była wyświetlana przez cały czas? Skopiuj swój kod do poniższej ramki. Rysunek 4 - Koło barw
Zadanie 4 Wyświetlanie obrazów Matryca LED może wyświetlać nie tylko tekst. Możesz również stworzyć obraz! Jeżeli powiększymy obraz cyfrowy, zobaczymy tysiące małych prostokącików wypełnionych jednym kolorem. Kombinacja tych prostokącików, czyli pikseli, tworzy obraz. W tym zadaniu dowiesz się, czym jest piksel oraz w jaki sposób wyświetlać obrazy przy użyciu matrycy LED nakładki Sense HAT. Ćwiczenie 1. Rysunek 5 ukazuje piksele ekranu LCD laptopa. Piksel jest małym elementem obrazu cyfrowego. Ma on np. postać niewielkich kwadratów widocznych w telefonie komórkowym. Każdy piksel na ekranie składa się z trzech mniejszych subpikseli (czerwonego, zielonego i niebieskiego). Można zobaczyć, że piksele są włączane i wyłączane, aby uformować wzory liter i cyfr. W ten sposób działają wszystkie ekrany komputerów i smartfonów. To samo trzeba zrobić, aby stworzyć rozpoznawalne kształty na matrycy LED. By Kprateek88 (Own work) [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 4.0-3.0-2.5-2.0-1.0 (http://creativecommons.org/licenses/by-sa/4.0-3.0-2.5-2.0-1.0)], via Wikimedia Commons Rysunek 5 Obrazy cyfrowe zbudowane są z pikseli Otwórz nowe okno Python 3 i wpisz poniższy kod.
Wybierz File > Save As i wybierz nazwę dla swojego programu. Następnie wybierz Run > Run Module. Co on zrobił? 2. Zmienne x i y określają, którą konkretnie diodę LED ma zmienić polecenie set_pixel. X odnosi się do osi poziomej i należy do przedziału od 0 po stronie lewej, do 7 po stronie prawej. Y odnosi się do osi pionowej i należy do przedziału od 0 u góry, do 7 u dołu. Wpisz w nowym oknie następujący kod: a) Pokoloruj powyższą matrycę tak, jak Twoim zdaniem wyświetli się na matrycy nakładki Sense HAT. b) Zapisz i uruchom kod. Czy zrobił to, czego oczekiwano? 3. Jeżeli chcesz, możesz spróbować narysować różne kształty lub wzory przy użyciu polecenia set_pixel pisząc nowe kody. Istnieje jednak polecenie set_pixels, które umożliwia zmienianie wszystkich 64 diod LED przy użyciu jednego wiersza kodu! Możesz na przykład narysować twarz Creepera z Minecraftu na matrycy LED. Możesz także użyć wielu zmiennych, aby zdefiniować swoją paletę kolorów. Uruchom poniższe przykłady:
Zwróć uwagę na składnię: sense.set_pixels(nazwa obrazu) i nawiasy []!
4. Czas stworzyć własny kod obrazu. Posługując się poniższą siatką, spróbuj zamienić na piksele Paxiego - maskotkę ESA. Każdy kwadrat powinien mieć kolor, który dominuje w odpowiednim kwadracie składającym się na obraz Paxiego. Zapisz kod, który umożliwi wyświetlenie obrazu Paxiego na matrycy LED. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 1 2 r 3 3 4 4 5 5 6 6 7 7 8 8 5. Otwórz nowe okno Python 3 uruchom swój kod. Czy Paxi pojawia się na matrycy LED?
Zadanie 5 Ustawianie orientacji Jak dotąd, Twoje teksty i obrazy pojawiały się zawsze pionowo, zakładając, że port HDMI znajduje się u dołu. Nie zawsze musi tak być (zwłaszcza na stacji ISS). W tym zadaniu dowiesz się, jak zmienić orientację matrycy i w jaki sposób obracać wyświetlane informacje wyjściowe. Ćwiczenie 1. Aby zmienić orientację matrycy, można użyć metody sense.set_rotation(), wpisując w nawiasie jeden z czterech kątów (0, 90, 180, 270). Otwórz nowe okno Python 3 i wpisz poniższy kod. Wybierz File > Save As i wybierz nazwę dla swojego programu. Następnie wybierz Run > Run Module. 2. Możesz również utworzyć wirujący tekst przy użyciu kodu for loop. Otwórz nowe okno Python 3. Wpisz i uruchom poniższy kod. Co on zrobił?
3. Można również przerzucić obraz na ekranie, zarówno w poziomie, jak i w pionie, przy użyciu następujących wierszy kodu: sense.flip_h() lub sense.flip_v() Poniższy przykład umożliwia stworzenie prostej animacji polegającej na naprzemiennym przerzucaniu obrazu: Rozszerzenie Czy potrafisz utworzyć wirujący obraz wykorzystując jedną z wcześniej omówionych technik rysowania i stosując metodę sense.set_rotation?
Kolejne kroki Użycie urządzeń wyjściowych, takich jak matryca nakładki Sense HAT jest fantastycznym sposobem wyświetlania tekstów i obrazów przy użyciu Astro Pi. Nakładka Sense HAT zawiera również cały zestaw czujników, które można wykorzystać do pomiarów otaczającej przestrzeni i przeprowadzania niesamowitych eksperymentów naukowych - w klasie, a także na pokładzie ISS! W następnym zestawie zadań, zapoznasz się z możliwościami, jakie dają czujniki nakładki Sense HAT.