KursyPoradnikiInspirujące DIYForum

Kurs micro:bit – #2 – wejścia i wyjścia w praktyce

Kurs micro:bit – #2 – wejścia i wyjścia w praktyce

Mamy za sobą pierwsze małe projekty, wiemy już, jak wyświetlić coś na micro:bicie. Teraz pora m.in. na obsługę wejść i poznanie nowych pętli.

Podczas realizacji ćwiczeń z tej części przydadzą się również uniwersalne moduły Grove. Za ich pomocą będziemy mogli rozbudować micro:bita.

Wejścia i wyjścia w micro:bit

Małe komputery, takie jak micro:bit, posiadają uniwersalne wejścia i wyjścia (w skrócie nazywane GPIO), do których można podłączać różne podzespoły elektroniczne. Do wyjść podłączymy np. diodę lub mały głośnik. Z kolei wejścia przydadzą się, gdy będziemy chcieli, aby nasz układ mógł reagować na sygnały z czujników (np. temperatury, odległości) oraz z przycisków. My do GPIO micro:bita podłączymy też np. czujnik gestów i taśmę pełną kolorowych diod.

Zanim przejdziemy do podłączenia dodatkowych elementów elektronicznych, możemy przetestować działanie przycisków umieszczonych na naszym micro:bicie. Na początek napiszmy prosty program, który włącza jedną diodę świecącą, gdy naciśniemy przycisk.

Wejścia w praktyce – prosta lampka

W tym celu wykorzystamy dwa nowe bloczki. Pierwszy z nich to on button A pressed z zakładki Input. Wszystko, co znajdzie się wewnątrz tego bloczka, wykona się po wciśnięciu przycisku opisanego jako A. W ramach tego ćwiczenia w jego wnętrzu umieszczamy bloczek show leds z zakładki Basic i klikamy myszką na diodę, która ma się zaświecić po naciśnięciu przycisku (np. diodę w prawym górnym rogu).

Program włączający diodę po wciśnięciu przycisku. Biały kwadrat symbolizuje diodę, która ma się zaświecić

Program włączający diodę po wciśnięciu przycisku. Biały kwadrat symbolizuje diodę, która ma się zaświecić

W przypadku tego projektu bloczki forever oraz on start nie są potrzebne (można zostawić je puste lub usunąć). Po wgraniu tego programu na naszym micro:bicie nie powinna się świecić żadna z 25 diod, które są dostępne na przodzie. Naciskamy przycisk A i jedna dioda powinna się włączyć. Dalsze naciskanie przycisku nic już nie zmieni.

Dodajmy teraz do programu opcję gaszenia diody za pomocą przycisku B. Wystarczy powielić to, co już mamy. Wybieramy bloczki z menu lub klikamy na nie PPM (prawym przyciskiem myszy) i duplikujemy. Naszym oczom ukaże się wtedy coś nowego – nowy komplet bloczków, który ma dziwny kolor.

Dziwny kolor skopiowanych bloczków

Dziwny kolor skopiowanych bloczków

Dziwny kolor i wzór drugiego kompletu bloczków symbolizują to, że nie są one używane w programie. W tym konkretnym przypadku dzieje się tak, ponieważ w programie możemy mieć tylko jeden bloczek on button A pressed. Ma to oczywiście sens, bo na wciśnięcie przycisku możliwa jest jedna reakcja, która powinna być opisana jednym zestawem bloczków, będącym już w naszym programie.

Chcemy gasić diodę przyciskiem B, więc możemy to zrobić. Zmieniamy w ustawieniu nowego bloczka przycisk A na B. Następnie klikamy na diodę, aby była wyłączona. Nowy program powinien składać się z dwóch niezależnych zestawów bloczków – pierwszy włącza diodę, a drugi ją wyłącza.

Poprawna wersja nowego programu

Poprawna wersja nowego programu

Wgrywamy i testujemy program – wszystko powinno działać jak prosta lampka, którą można sterować za pomocą dwóch przycisków. Równie dobrze można w ten sposób np. zbudować urządzenie, które będzie wyświetlało (zależnie od wciśniętego przycisku) inną ikonę. Poeksperymentuj samodzielnie!


Pora, aby rozbudować możliwości naszego micro:bita za pomocą dodatkowych modułów z serii Grove, które są częścią zestawu do tego kursu. Zacznijmy jednak od małego wstępu!

Czym są moduły Grove?

Podczas tego kursu wykorzystujemy zestaw firmy SeeedStudio, w którego składzie znajdziemy kilka modułów z uniwersalnej serii Grove oraz adapter dedykowany dla micro:bita. Grove to popularna seria małych modułów elektronicznych, które są kompatybilne z wieloma zestawami edukacyjnymi. Tutaj będziemy je łączyć z płytką micro:bit, ale dokładnie tych samych modułów będziesz mógł w przyszłości użyć w innych projektach, np. łącząc je z popularnym Arduino i Raspberry Pi.

Gotowe zestawy do kursów Forbota

 Komplet elementów  Gwarancja pomocy  Wysyłka w 24h

Moduły do wykonania wszystkich ćwiczeń z kursu micro:bita dostępne są w formie gotowych zestawów! W komplecie m.in.: micro:bit, czujnik gestów i odległości oraz taśma diod RGB.

Zamów w Botland.com.pl »

Główną zaletą modułów z serii Grove jest ich duża różnorodność oraz uniwersalność. Wszystkie płytki z tej serii są wyposażone w taki sam typ złącz, więc wszystko można bardzo szybko łączyć – bez obawy, że popełnimy jakiś błąd i uszkodzimy układ. Zresztą… wszystkie ich zalety będą widoczne w praktyce!

Korzystanie z modułów Grove w praktyce

Korzystanie z modułów jest niezwykle intuicyjne. Wsuwamy micro:bita w dedykowaną podstawkę, a następnie podłączamy moduły do jednego z czterech gniazd. Jedyne, na co trzeba zwracać uwagę, to opisy gniazd na płytce (są tam oznaczenia typu P0/P14). Jeśli się pomylimy, to nic się nie stanie, ale podłączenie modułu do odpowiedniego gniazda jest konieczne do poprawnego działania programu.

Płytka micro:bit wsunięta w adapter Grove

Płytka micro:bit wsunięta w adapter Grove

Podczas wykonywania niektórych ćwiczeń konieczne będzie podłączenie dodatkowego zasilania (przewodem microUSB do adaptera Grove). Informacja na ten temat pojawi się w odpowiednim momencie kursu. Teraz całość może być zasilana jeszcze tak jak w poprzedniej części, czyli przez przewód USB, który służy też do programowania.

Podłączenie dodatkowej diody

Pora, aby do naszego micro:bita podłączyć dodatkową diodę świecącą. W tym celu użyjemy oczywiście modułu Grove, który podłączamy do wejścia P0/14. Możliwe, że Twój nowy moduł nie miał domyślnie zamocowanej diody. Jeśli znajdowała się ona luźno w opakowaniu, to wciśnij ją delikatnie w podstawkę zgodnie z poniższą grafiką. Ważny jest sposób podłączenia diody – zaokrąglona część obudowy musi się znaleźć tam, gdzie na płytce narysowany jest plus.

Poprawny sposób na umieszczenie diody w module

Poprawny sposób na umieszczenie diody w module

Na module znajduje się również potencjometr, czyli element z małym pomarańczowym pokrętłem, którym można regulować jasność świecenia diody. Na razie nic z nim nie rób, za chwilkę pokażemy, jak należy go wykorzystywać.

Wykorzystajmy wcześniejszy program w taki sposób, abyśmy mogli sterować nową diodą. Element ten został podłączony do cyfrowego uniwersalnego wyjścia – oznacza to, że na tym wyjściu mogą dziać się dwie rzeczy: może być tam stan logiczny wysoki (1) lub stan logiczny niski (0). Nie ma potrzeby, aby zajmować się tym tematem szerzej – na to przyjdzie czas w przyszłości, np. podczas naszego kursu podstaw elektroniki lub kursu Arduino.

Teraz wystarczy zapamiętać w dużym uproszczeniu, że: jeśli na wyjściu jest wysoki stan logiczny (oznaczany jako 1), to znaczy, że może płynąć tam prąd, a jeśli na wyjściu jest niski stan logiczny (0), to znaczy, że prąd tam nie płynie. Czyli w praktyce:

Najlepiej sprawdzić to w praktyce. Potrzebne jest coś, czym będziemy mogli kontrolować stan wyjścia. Tutaj przyda się bloczek, który nazywa się digital write pin P0 to 1. Za pomocą menu rozwijanego możemy wybierać różne piny (zamiast P0), a także zmieniać wartość tego wyjścia na 0 lub 1 (wystarczy wpisać odpowiednią cyfrę).

Uwaga na temat numeracji: gniazda, do których podłączamy moduły mają wyprowadzone (oprócz zasilania) 2 wyjścia micro:bita. Gniazdo opisane jako P0/P14, pozwala więc wykorzystać piny P0 oraz P14. Jednak większość modułów z serii Grove potrzebuje tylko jednego sygnału. Moduły zbudowane są w taki sposób, że w takiej sytuacji korzystają zawsze z pierwszego pinu. Czyli podłączając diodę do P0/P14 wiemy, że na pewno korzysta ona z P0, a nie z P14.

Edytujemy więc poprzedni program w taki sposób, aby włączana i wyłączana była nowa dioda:

Program sterujący diodą

Program sterujący diodą

Wgrywamy i testujemy! Od teraz nasze przyciski powinny sterować nową diodą. Zbudowaliśmy więc prosty system sterowania oświetleniem. Wystarczyłoby zmodyfikować trochę nasz układ (dodając inny moduł) i moglibyśmy już w taki sposób sterować np. potężną latarką lub lampką na biurku. Zasada działania układu byłaby taka sama!

Co, jeśli dioda nie świeci? Regulacja jasności

Jeśli dioda nie świeci po wciśnięciu przycisku, to możliwe, że jest źle podłączona lub świeci, ale bardzo słabo. W takiej sytuacji warto sprawdzić następujące cztery rzeczy:

  1. Czy moduł jest na pewno podłączony do gniazda P0/P14?
  2. Czy w programie na pewno wybrany jest pin P0?
  3. Czy dioda jest na pewno włożona w podstawkę w odpowiedni sposób (część okrągła do plusa)?
  4. Jeśli dioda nadal nie świeci (po wciśnięciu przycisku A), to przekręć potencjometr maksymalnie w lewo lub w prawo. Możesz przekręcić go małym śrubokrętem lub wykorzystaj krokodylki, które są w zestawie, aby złapać za pomarańczowy element i delikatnie go przekręć.
Sposób regulacji jasności świecenia diody

Sposób regulacji jasności świecenia diody

Zależnie od ustawienia potencjometru dioda będzie świeciła z różną intensywnością – warto o tym pamiętać podczas wykonywania wszystkich projektów. Wykonaj kilka testów i sprawdzić, jaka jasność diody sprawdzi się najlepiej. Testy najlepiej przeprowadzić przy wyłączonym świetle.

Opóźnienia w micro:bicie

Podczas tworzenia programów bardzo często chcemy, aby dana operacja trwała tylko przez chwilę. Na przykład chcielibyśmy, aby dioda zaświeciła się tylko na 2 sekundy. Aby było to możliwe, konieczne jest wykonanie trzech operacji:

  1. Włączenie diody.
  2. Odczekanie 2 sekund, czyli 2000 ms (milisekund).
  3. Wyłączenie diody.

Tutaj z pomocą przychodzi nowy bloczek pause (ms) z zakładki Basic, dzięki któremu wstrzymamy program. Możemy zbudować program, w którym naciśnięcie przycisku A włączy diodę na 2 sekundy, a naciśnięcie przycisku B włączy diodę na 200 milisekund, czyli 0,2 sekundy.

Nowa wersja programu

Nowa wersja programu

Wgrywamy i testujemy program! Od teraz nasza nowa lampka będzie mogła samoczynnie gasić się po odpowiednim czasie. Zastosowań dla takiego oświetlenia może być bardzo dużo. Moglibyśmy np. zbudować inteligentną lampkę, która uruchamia się tylko na kilkadziesiąt sekund, gdy ktoś wejdzie do pomieszczenia – możliwości jest wiele. Pomyśl o innych zastosowaniach dla takiego urządzenia!

Pętle, czyli wykonywanie tych samych czynności

Załóżmy, że chcielibyśmy, aby dioda po wciśnięciu przycisku włączyła się i wyłączyła np. 2 razy. Całość możemy oczywiście zaprogramować następująco:

Program, który zamiga diodą

Program, który zamiga diodą

Oczywiście wszystko zadziała – po wgraniu tego programu dioda zamiga 2 razy, gdy wciśniemy przycisk. Na pewno tak samo moglibyśmy uzyskać 3 mignięcia, ale co przy 10 lub 100 mignięciach? Nikt nie chciałby tyle razy kopiować bloczków. Tutaj z pomocą przychodzą pętle, dzięki którym kilka bloczków może być wykonywanych wiele razy.

W poprzedniej części kursu poznaliśmy pętlę forever, czyli pętlę nieskończoną, dzięki której możliwe było wykonanie animacji pulsującego serca. Tym razem poznamy pętlę, której bloczek nazywa się dość zawile: repeat 4 times do (do znalezienia w zakładce Loops). Za pomocą tej pętli możemy sprawić, że instrukcje z bloczków zostaną wykonane konkretną liczbę razy (domyślnie 4).

Program migający 4 razy diodą można więc skrócić do następującej formy:

Skrócona wersja dzięki użyciu pętli

Skrócona wersja dzięki użyciu pętli

Działanie tej skróconej wersji będzie identyczne co wcześniejszej. W ramach eksperymentu warto zmienić liczbę powtórzeń (z 4 na np. 2 lub 6), ciekawym doświadczeniem będzie też zmiana prędkości migania diody, np. na 100 ms.

Oczywiście takich pętli możemy mieć w programie kilka, możemy więc wykorzystać drugi przycisk (B) i za jego pomocą np. wyświetlać prostą animację, która zostanie powtórzona 4 razy. Tutaj warto też wykorzystać nowy bloczek clear screen (dostępny w Basic > more) – dzięki niemu ekran zgaśnie po zakończeniu naszej animacji. Bez niego na ekranie zostałby po niej ślad.

Ostateczna wersja programu

Ostateczna wersja programu

Uważniejsi kursanci mogą się teraz zastanawiać, dlaczego w pętli migającej diodą są opóźnienia, a w pętli, która wyświetla ikony, nie ma żadnych opóźnień.

Animacja po naciśnięciu przycisku B

Animacja po naciśnięciu przycisku B

Słuszna uwaga! Odpowiedź jest jednak bardzo prosta: bloczek show icon zawiera takie opóźnienie już w sobie. Konkretnie bloczek ten zawiera w sobie opóźnienie wynoszące 600 ms. Możemy je wydłużyć (dostawiając bloczek pause), ale niestety nie możemy go skrócić.

Dodatek (dostępny w książce)

Osoby, które zdecydowały się na wsparcie naszej działalności i kupiły kurs w formie książki drukowanej lub e-booka, znajdą tu dodatkowy komentarz na temat wykorzystywania przycisków, przykład kodu, który reaguje na jednoczesne naciśnięcie dwóch przycisków, oraz rozwiązania do zadań domowych.

Zadania dodatkowe

Zad. 2.1. Stwórz program, w którym po naciśnięciu przycisku A wyświetli się Twoje imię, a po naciśnięciu przycisku B na ekranie pojawi się animacja pulsującego serca (powtarzana 3 razy).

Zad. 2.2. Wykorzystaj bloczki show leds do stworzenia programu wskazującego strzałką, który z przycisków (A lub B) został ostatnio naciśnięty przez osobę korzystającą z micro:bita.

Zad. 2.3. Napisz program, w którym naciśnięcie przycisku A włącza moduł z diodą świecącą podłączoną do gniazda P0/P14. Dioda powinna wyłączać się 5 sekund po naciśnięciu przycisku B.

Podsumowanie

Za nami pierwsze kroki z modułami Grove, dzięki którym już niedługo będziemy mogli tworzyć bardzo ciekawe projekty. Udało nam się również opanować używanie przycisków i pętli, z których będziemy korzystać od teraz bardzo często.

Czy wpis był pomocny? Oceń go:

Średnia ocena 4.9 / 5. Głosów łącznie: 169

Nikt jeszcze nie głosował, bądź pierwszy!

Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!

Podstawy są już za nami, więc w kolejnej części kursu skupimy się na programowaniu. Nauczymy się także wykorzystywać wejścia analogowe, do których można podłączać np. czujnik światła lub obrotu. Dzięki temu zbudujemy np. inteligentną lampkę, która będzie włączała się w ciemności.

Autor kursu: Damian Szymański

Nawigacja kursu

kurs, kursmicrobit, micro:bit, pętle, programowanie

Trwa ładowanie komentarzy...