Micro:Bit i przypinka z nastrojem

Projekt polega na płytki Micro:Bit, żeby pokazywała nastrój, w jakim obecnie znajduje się jej użytkownik. Ten fakt będzie komunikowany przez grafiki wyświetlające się na panelu LED. Guziki na płytce będą pozwalały na przełączanie się pomiędzy różnymi stanami nastroju. Sam projekt będzie zaś tak zaprojektowany, żeby móc nosić go jako przypinkę na plecaku, czy ubraniu.

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 płytką Micro:Bit.

Co będzie potrzebne:

  • płytka Micro:Bit,
  • kabel USB do połączenia płytki i komputera,
  • komputer z dostępem do internetu,
  • szuflada na baterie z połączeniem do Micro:Bita.

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
from microbit import *

usmiech = Image("09090:"
                "09090:"
                "00000:"
                "90009:"
                "09990")
           
normalny = Image("09090:"
                 "09090:"
                 "00000:"
                 "99999:"
                 "00000")

smutny = Image("09090:"
               "09090:"
               "00000:"
               "09990:"
               "90009")

humory = [usmiech, normalny, smutny]

licznik = 0

while True:
    if button_a.is_pressed():
        if licznik == 0:
            licznik = len(humory) - 1
        else:
            licznik -= 1
        sleep(200)
    if button_b.is_pressed():
        if licznik == len(humory) - 1:
            licznik = 0
        else:
            licznik += 1
        sleep(200)
    display.show(humory[licznik])

Opis kodu:

Na początku skryptu definiujemy trzy obrazy, które będę później wyświetlane na panelu LED Micro:Bita. Są one zapisane w zmiennych usmiech, normalny i smutny. Szerzej ta czynność została opisana na stronie Micro:Bit i animacja.

Następnie stworzona zostaje lista humory, w której ulokowane zostają zadeklarowane wcześniej obrazy. Będzie ona używana do zmiany wyświetlanego obrazu na panelu LED.

W nieskończonej pętli while True zostają zakodowane dwie interakcje użytkownika: wciśnięcie guzika A i wciśnięcie guzika B. Działają one bliźniaczo, z tą różnicą, że guzik A obsługuje przechodzenie po liście humory w lewo, a guzik B w prawo.

Tak Micro:Bit prezentuje się jako przypinka

Skrypt opiera się o zmienną licznik, która przechowuje obecne “miejsce” listy (warto przypomnieć, że elementy listy numeruje się od 0). Na przykładzie guzika A można działanie tej instrukcji warunkowej opisać tak, że jeśli chcemy przejść w lewo, a jesteśmy na pierwszy elemencie, to nowy numer miejsca powinien być elementem ostatnim z prawej. Taki element ma indeks len(humor) - 1. W każdym innym przypadku, przy przechodzeniu w lewo, indeks powinien zmniejszać się o 1.