Sense Hat i animacja

Panel LED płytki Sense Hat może z powodzeniem wyświetlać animacje. Będą one składały się z przygotowanych wcześniej klatek z obrazkami. Taki skrypt może być przydatny do bardziej zaawansowanego sygnalizowania stanu poszczególnych komponentów płytki, niż za pomocą statycznego obrazka.

Zaznaczam, że przedstawiony tu sposób realizacji projektu to jedynie przykład, który starałem się dopasować poziomem dla osób początkujących zarówno z programowaniem w Pythonie, jak i z rozszerzeniem Sense Hat.

Co będzie potrzebne:

  • komputer Raspberry Pi z płytką Sense Hat,
  • monitor/projektor z okablowaniem,
  • klawiatura i mysz.

Kod projektu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from sense_hat import SenseHat
from time import sleep

sense = SenseHat()

W = (0, 0, 0)
G = (27, 169, 49)
Z = (102, 153, 170)
B = (51, 102, 170)
O = (238, 136, 68)

ptak1 = [
  W,W,G,G,W,W,W,W,
  W,G,G,G,G,W,W,W,
  O,G,B,G,G,W,W,Z,
  W,G,G,G,Z,Z,Z,Z,
  W,G,G,G,Z,Z,Z,Z,
  W,W,G,G,G,G,G,W,
  W,W,G,G,G,W,W,W,
  W,W,O,W,O,W,W,W
  ]

ptak2 = [
  W,W,G,G,W,W,W,W,
  W,G,G,G,G,W,W,W,
  O,G,B,G,G,W,W,W,
  W,G,G,G,Z,Z,Z,Z,
  W,G,G,G,Z,Z,Z,Z,
  W,W,G,G,G,G,G,Z,
  W,O,G,G,G,O,W,W,
  W,W,W,W,W,W,W,W
  ]

sense.set_rotation(180)

while True:
    sense.set_pixels(ptak1)
    sleep(1)
    sense.set_pixels(ptak2)
    sleep(1)

Opis kodu:

Podobnie jak to miało miejsce w projekcie Sense Hat i obraz LED, skrypt zaczyna się od zadeklarowania kolorów w zmiennych W, G, Z, B i O. Dla przypomnienia, liczby tam użyte to współrzędne chromatyczne danych kolorów. Liczby po kolei oznaczają jasność koloru czerwonego, zielonego i niebieskiego (RGB) na diodach płytki Sense Hat.

Następnie deklarowane są dwie listy: ptak1 i ptak2. To w nich, piksel po pikselu, zakodowane są obrazy, jakie wyświetlą się na panelu LED.

Nową instrukcją zapisaną w języku Python jest sense.set_rotation(180). Nie jest ona konieczna i tu podana bardziej jako ciekawostka. Odpowiada za obrócenie obrazu na płytce Sense Hat o 180 stopni w porównaniu do domyślnego. Jako argument może przyjmować wartości takiej jak 0, 90, 180, 270, które odpowiednio oznaczają kąt obrotu obrazu na panelu LED.

Jeden z ptaków, jakie będzie wyświetlała animacja

Następnie w skrypcie zostaje zapisana pętla while True. W jej wnętrzu deklarujemy, że na panelu LED ma wyświetlić się najpierw obraz oznaczony jako ptak1, a następnie ptak2. Po każdym z obrazów ma nastąpić również 1 sekunda przerwy.