KursyPoradnikiInspirujące DIYForum

Kurs micro:bit – #9 – krokodylki, tester refleksu

Kurs micro:bit – #9 – krokodylki, tester refleksu

W ostatniej części kursu wykorzystamy kolorowe przewody z tzw. krokodylkami, dzięki którym do micro:bita podłączymy zadziwiające przedmioty.

Kulka z folii aluminiowej, spinacz i banan? Tak, te elementy też mogą pełnić funkcję niezwykle oryginalnych przycisków!

Czym są krokodylki?

W zestawie do tego kursu znaleźć można komplet kolorowych przewodów, które zakończone są tzw. krokodylkami, czyli „metalowymi klamerkami”. Za ich pomocą można bardzo łatwo łączyć różne układy elektroniczne bez konieczności lutowania. Wystarczyć zacisnąć „klamerki” w odpowiednich miejscach, a prąd z łatwością popłynie przewodem od jednego punktu do drugiego.

Przykładowy sposób wykorzystania krokodylka (przypięcie od boku lub od góry płytki)

Przykładowy sposób wykorzystania krokodylka (przypięcie od boku lub od góry płytki)

Uniwersalność krokodylków sprawia, że można je podłączyć praktycznie w dowolne miejsce układu, ale oznacza to również, że w przypadku błędnego podłączenia można uszkodzić micro:bita lub jakiś inny element zestawu. W związku z tym, wykonując ćwiczenia z tej części kursu, wszystkie podłączenia warto robić przy odłączonym zasilaniu (przynajmniej na początku), a całość podłączać do komputera dopiero po dokładnym sprawdzeniu poprawności połączeń.

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 »

Już na samym początku kursu tworzyliśmy programy, które reagowały na naciśnięcie jednego z dwóch przycisków (A lub B) umieszczonych na micro:bicie. Jak działa taki przycisk? Po jego naciśnięciu blaszka umieszczona we wnętrzu zwiera jedno wyprowadzenie micro:bita z masą układu (GND), co sprawia, że w obwodzie płynie niewielki prąd. Dzięki temu nasz mały komputerek wykrywa naciśnięcie przycisku. Bardzo łatwo możemy więc dorobić „dodatkowy przycisk” za pomocą krokodylków.

Dodatkowy przycisk dla micro:bita

Zacznijmy od prostego testu, w którym sprawdzimy, czy wszystko działa poprawnie. W tym celu jeden przewód podłączamy do złotego pola na krawędzi płytki Grove, opisanego jako GND, a drugi – do pola opisanego jako P1. Oczywiście kolory przewodów nie mają tutaj żadnego znaczenia.

Przykładowe podłączenie krokodylków do micro:bita

Przykładowe podłączenie krokodylków do micro:bita

Połączenie takie oznacza, że zielony przewód został podłączony do masy układu (GND), a czerwony do wyprowadzenia micro:bita numer P1. Do tej pory korzystaliśmy już z tego wyprowadzenia wiele razy, gdy podłączaliśmy moduły do gniazda P1/P15, na które wyprowadzone są cztery sygnały:

  • masa układu (GND),
  • dodatnia szyna zasilania (3,3 V),
  • wyprowadzenie micro:bita numer P15,
  • wyprowadzenie micro:bita numer P1.

Korzystając z krokodylków, podłączamy się dokładnie do tych samych wyprowadzeń. Trzeba zatem od razu zapamiętać, że jeśli podłączamy coś do punktu opisanego jako P1, to nie powinniśmy już niczego podłączać do gniazda P1/P15 (chyba że mielibyśmy moduł, który korzysta tylko z wyjścia P15).

Stwórzmy teraz prosty program, który będzie wykrywał, czy wejście P1 jest zwarte z masą. W tym celu do pętli forever wstawiamy warunek if. Następnie warunek uzupełniamy bloczkiem pin P0 is pressed, który znajduje się w zakładce Input – od razu zmieniamy tylko numer pinu z P0 na P1. W kolejnym kroku dodajemy do warunku bloczek show leds, który wyświetli ikonkę, gdy przycisk będzie wciśnięty, oraz drugi, który wyczyści ekran, gdy „przycisk” będzie puszczony.

Program testujący działanie krokodylków

Program testujący działanie krokodylków

Nowy bloczek użyty w tym programie, czyli pin P1 is pressed, pozwala sprawdzić, czy wyprowadzenie numer P1 jest zwarte z masą układu (jeśli jest, to bloczek ten jest równy „prawdziwe”). Czyli w praktyce na ekranie micro:bita powinna pojawić się uśmiechnięta buźka, jeśli połączymy czerwony przewód z zielonym. Można je zetknąć tylko na chwilę lub zacisnąć jeden krokodylek na drugim. Udało nam się więc zbudować „dodatkowy przycisk”, który może sterować pracą układu.

Poprawny wynik działania programu

Poprawny wynik działania programu

Prosty przycisk dotykowy

Wcześniejszy układ zadziałał, bo między wejściem P1 a GND (masą) mógł popłynąć prąd. To oznacza, że micro:bit powinien wykryć takie „naciśnięcie przycisku” również w sytuacjach, gdy przewody zostaną połączone za pomocą innego przewodzącego materiału, np. metalowego spinacza lub… człowieka!

Na szczęście micro:bit zasilany jest znacznie mniejszym napięciem, a do tego w układzie takim płynie bardzo, ale to bardzo mały prąd, który jest bezpieczny dla człowieka. W związku z tym nic nam nie grozi i w tej sytuacji śmiało możemy dotknąć palcami metalowych krokodylków. Możemy więc chwycić czarny przewód (podłączony do GND) lewą ręką, a drugi (podłączony do P1) – prawą ręką.

Przewodów nie trzeba nawet mocno ściskać, wystarczy wręcz oprzeć delikatnie metalowe elementy na opuszkach palców. Wiele może jednak zależeć od konkretnej osoby, bo każdy człowiek stanowi inną przeszkodę dla prądu – ma na to wpływ m.in. wilgotność skóry. W przypadku problemów z działaniem tego układu warto delikatnie nawilżyć palce (np. śliną) lub mocniej ścisnąć przewody.

Układ działa, bo niewielki prąd przepływa przez ciało człowieka

Układ działa, bo niewielki prąd przepływa przez ciało człowieka

W takiej sytuacji prąd wypływa z micro:bita jednym przewodem, przechodzi przez nasze ciało i wraca drugim przewodem do płytki, czyli znów micro:bit będzie potrafił wykryć „naciśnięcie przycisku”, a właściwie nasze dotknięcie.

Przycisk z folii aluminiowej

Świetnym przewodnikiem prądu jest też folia aluminiowa, którą używa się w kuchni np. do pakowania kanapek. Możemy więc wykorzystać ją do budowy wygodniejszej wersji takiego przycisku dotykowego. Wystarczy, że do krokodylków podłączymy dwie duże kulki z folii aluminiowej.

Aluminiowe kulki podłączone do micro:bita

Aluminiowe kulki podłączone do micro:bita

Teraz w programie możemy wykorzystać nowy bloczek – on pin P0 pressed z zakładki Input. Zmieniamy tylko numer wyprowadzenia z P0 na P1 i gotowe. Bloczek ten zadziała tak samo jak bloczki, których do tej pory używaliśmy do reagowania na naciśnięcie przycisku A i B. Wystarczy, że do wnętrza naszego nowego bloczka dodamy np. ikonkę serca, a wyświetli się ona za każdym razem, gdy ktoś dotknie jednocześnie dwóch kulek z folii.

Program testujący kulki z folii aluminiowej w roli przycisku

Program testujący kulki z folii aluminiowej w roli przycisku

Po wgraniu programu można przejść do jego przetestowania. Jedną rękę kładziemy na folii, która jest podłączona do masy, a drugą ręką „klepiemy” kulkę podłączoną do P1. Układ nie wykryje dotknięcia, jeśli prąd będzie płynął długo, tzn. gdy będziemy trzymać obie kulki przez dłuższy czas. Ważne, aby prąd płynął tylko przez chwilę – tak samo jak podczas naciskania przycisku (klikamy i puszczamy, nie trzymamy go długo wciśniętego).

Ikona serca pojawiła się na chwilę po „klepnięciu”drugiej aluminiowej kulki (pierwsza kulka może być cały czas trzymana)

Ikona serca pojawiła się na chwilę po „klepnięciu”
drugiej aluminiowej kulki (pierwsza kulka może być cały czas trzymana)

Tester refleksu

Łącząc powyższe informacje, zbudujemy grę, która przetestuje nasz refleks! Układ będzie działał następująco: po włączeniu zasilania program odczeka losowy czas, a następnie włączy jedną diodę na ekranie micro:bita. Zadaniem gracza będzie dotknięcie kulki z folii aluminiowej natychmiast po tym, gdy na ekranie włączy się dioda. Na koniec na ekranie micro:bita zostanie wyświetlony wynik, czyli czas, który upłynął od włączenia diody do dotknięcia kulki – tym samym zmierzymy, ile czasu gracz potrzebował na zareagowanie, i sprawdzimy jego refleks!

Aluminiowe kulki podłączone do micro:bita

Aluminiowe kulki podłączone do micro:bita

Zaczynamy od fragmentu programu, który wprowadzi losowe opóźnienie. Do on start musimy dodać bloczek opóźnienia pause ms, którego wartość będzie losowa. W tym celu jego wnętrze uzupełniamy za pomocą pick random 1000 to 5000 z zakładki Math. Dzięki temu nasz program po włączeniu nie będzie robił nic przez 1–5 sekund. Następnie włączamy diodę, która będzie sygnałem dla gracza, że ma dotknąć kulki. Dodajemy też reakcję na naciśnięciu „przycisku” zbudowanego z folii aluminiowej – tutaj potrzebny będzie użyty wcześniej on pin P1 pressed, który wyświetli odpowiednią ikonkę.

Uproszczona, testowa wersja programu

Uproszczona, testowa wersja programu

Teraz trzeba rozbudować program w taki sposób, aby mógł mierzyć, ile czasu upłynęło od włączenia diody do reakcji gracza. Tutaj pomocny będzie nowy bloczek – running time (ms). Upraszczając, można powiedzieć, że micro:bit ma wbudowany stoper, który jest uruchamiany natychmiast po włączeniu zasilania lub wgraniu programu. W programie możemy zawsze użyć bloczka running time (ms), który powie nam, ile dokładnie milisekund do tej pory naliczył ten stoper.

Dodajmy do programu zmienną reaction, która pomoże obliczyć czas reakcji. Na początku, w on start, przypisujemy do niej wartość wskazywaną przez „wirtualny stoper”. Robimy to zaraz pod bloczkiem z losowym opóźnieniem. Dzięki temu w zmiennej reaction zapamiętamy dokładny czas od włączenia układu, w którym nastąpiło włączenie diody.

Zmodyfikowana wersja początkowej części programu

Zmodyfikowana wersja początkowej części programu

Teraz modyfikujemy zawartość bloczka wykrywającego dotknięcie aluminiowych kulek. Po wykryciu tego zdarzenia do zmiennej reaction zapisujemy czas reakcji gracza, który obliczamy następująco: bierzemy aktualne wskazanie stopera i odejmujemy od niego wartość zapamiętaną w on start. Różnica jest obliczana za pomocą fioletowego bloczka odejmowania z zakładki Math. Na koniec dodajemy też nieskończoną pętlę while, która cały czas będzie wyświetlała wynik.

Cały program testera refleksu

Cały program testera refleksu

Jak to działa w praktyce? Sprawdźmy na konkretnym przykładzie:

  1. Wgrywamy program lub włączamy zasilanie program rusza.
  2. Stoper automatycznie zaczyna działać w tle i zlicza, ile czasu pracuje micro:bit.
  3. Rozpoczyna się właściwy program, bloczek pause zatrzymuje nas na losowy okres.
  4. Opóźnienie kończy się i program zaczyna działać dalej.
  5. Do zmiennej reaction zapisywany jest czas pracy micro:bita, np. 2546 milisekund.
  6. Natychmiast po zapisaniu tej informacji włączana jest dioda.
  7. Program nic więcej nie robi, tylko czeka na reakcję gracza.
  8. Gracz dotyka aluminiowych kulek, uruchamia się bloczek on pin P1 pressed.
  9. Sprawdzamy aktualne wskazanie wirtualnego stopera, które wskazuje np. 3246 milisekund.
  10. Od wskazania odejmujemy poprzednio zapamiętaną wartość: 3246 2546 = 700.
  11. Zapisujemy nową wartość do zmiennej reaction − to nasz wynik, gracz zareagował po 700 milisekundach od włączenia diody, czyli w mniej niż 1 sekundę!
  12. Wyświetlamy na ekranie ikonkę.
  13. Przechodzimy do nieskończonej pętli while, która w koło wyświetla wynik.

Wykorzystany tutaj mechanizm może z pozoru wydawać się zawiły, ale jest tak naprawdę bardzo prosty. Można nawet dla testu odtworzyć działanie programu z użyciem kartki, długopisu, zwykłego stopera oraz powyższej listy, która omawia działanie programu krok po kroku.

Działanie układu w praktyce powinno wyglądać następująco (wynik: 390 milisekund):

Gdy wszystko będzie jasne, warto przejść do zabawy i przetestować refleks wszystkich domowników! Aktualna, prosta wersja gry nie ma wbudowanego mechanizmu restartującego, więc aby mogła zagrać kolejna osoba, trzeba wgrać od nowa program lub odłączyć i podłączyć micro:bit do zasilania, lub nacisnąć przycisk reset, który znajduje się na odwrocie micro:bita (obok gniazda microUSB).

Magiczny instrument z bananów

Wiemy już, że możemy łatwo wykrywać bezpośrednie połączenie krokodylków lub sytuację, w której sami swoim ciałem zamkniemy obwód, co pozwoli na przepływ niewielkiego prądu. Wiele osób wie, że folia aluminiowa przewodzi prąd, więc może domyślać się, jak działa ten układ, ale okazuje się, że w tym zastosowaniu sprawdzą się również inne obiekty, które mogą przewodzić niewielki prąd – do tej grupy zaliczają się też owoce, np. pomarańcze lub banany!

Możemy zatem zbudować instrument, który będzie reagował na nasze gesty oraz dotknięcie bananów. Zaczynamy od niezbędnego podłączenia. Czujnik gestów (opisany w 5. części kursu) podłączamy do gniazda I2C, do P0/P14 wpinamy moduł głośnika, a do tego podłączamy po jednym krokodylku do punktów opisanych jako P1, P2 oraz GND.

Następnie każdy z krokodylków podłączamy do osobnego banana – zwyczajnie „wgryzamy się” metalową klamerką w skórę bananów (jeśli nie masz owoców, możesz zamiast nich wykorzystać kulki z folii aluminiowej lub w ostateczności zostawić nawet „gołe” krokodylki).

Instrument z bananami i czujnikiem gestów

Instrument z bananami i czujnikiem gestów

Podczas tworzenia programu naszego instrumentu można wykazać się kreatywnością – trzeba tylko połączyć informacje z powyższych ćwiczeń na temat bloczku on pin P1 pressed z tymi, które pojawiły się w 4. części kursu. Przykładowy program może wyglądać następująco:

Przykładowy program magicznego instrumentu

Przykładowy program magicznego instrumentu

Od teraz możliwe będzie wydobywanie dźwięków za pomocą gestów i granie na bananach. Wystarczy, że wykonamy odpowiedni gest nad czujnikiem lub dotkniemy dwóch bananów naraz (tego, który podłączony jest do GND, oraz dowolnego innego). W ramach rozbudowania układu można też dodać jeszcze np. wyświetlanie ikonek na wyświetlaczu, aby każdy wiedział, że jest to instrument.

Podłączenie słuchawek? Jednak się da!

Podczas 4. części kursu micro:bita wykorzystywaliśmy moduł Grove z głośnikiem, ponieważ micro:bit nie posiada złącza, do którego można podłączyć słuchawki. Okazuje się jednak, że dla prawdziwego majsterkowicza nie ma rzeczy niemożliwych – damy radę je podłączyć. Potrzebne będą tylko słuchawki przewodowe ze złączem typu minijack i niezwykle uniwersalne krokodylki.

Przykładowe złącze minijack

Przykładowe złącze minijack

Jednak zanim przejdziemy do podłączenia słuchawek, to najpierw wgrywamy prosty program, który odegra melodyjkę po naciśnięciu przycisku A:

Program testujący podłączenie słuchawek

Program testujący podłączenie słuchawek

Do micro:bita podłączamy tylko dwa krokodylki – pierwszy do punktu P0, a drugi do GND. Odłączamy też wszystkie inne modułu (w szczególności moduł głośnika podłączony uprzednio do P0/P14). Teraz pora na słuchawki. Zdecydowana większość popularnych słuchawek zakończona jest tzw. złączem typu minijack, które składa się z trzech pól oddzielonych plastikowymi pierścieniami. Upraszczając: pierwsze, największe pole to masa (GND), a kolejne dwa to sygnały dla lewej i prawej słuchawki.

Podłączenie krokodylków do słuchawek ze złączem minicjack

Podłączenie krokodylków do słuchawek ze złączem minicjack

Wystarczy, że podłączymy się do tych miejsc za pomocą naszych uniwersalnych krokodylków. Masę, czyli GND, łączymy z polem, które jest najbliżej przewodu słuchawek, a krokodylek od P0 podłączamy do ostatniego pola na złączu minijack. Od teraz sygnał dźwiękowy generowany przez micro:bit na wyprowadzeniu P0 usłyszymy w jednej ze słuchawek!

Dodatek (dostępny w książce)

Osoby, które zamówiły kurs w formie książki drukowanej lub e-booka, znajdą tu dodatkowy przykład, który pokazuje, jak można reagować na odwrotną sytuację, tzn. taką, gdy ktoś przerwie obwód, np. puszczając trzymane kulki. Dzięki temu możliwe będzie zbudowanie symulatora bomby, którą można rozbroić poprzez „przecięcie odpowiedniego przewodu”. Do tego, w ramach dodatku, umieszczone zostały przykładowe rozwiązania do poniższych „zadań domowych”.

Zadania dodatkowe

Zad. 9.1. Napisz program prostego odtwarzacza, który po włączeniu wyświetla napis „WITAJ” i animację składającą się z dwóch nutek migających na zmianę 3 razy. Zaprojektuj nutki za pomocą show leds lub użyj gotowych ikonek. Następnie układ powinien w pętli pokazywać animację strzałki, która wskaże użytkownikowi przycisk A. Po jego naciśnięciu powinna włączyć się jedna z melodii (wybierz dowolną). Przycisk B powinien ją zatrzymywać. Zamiast  głośnika wykorzystaj słuchawki.

Zad. 9.2. Stwórz program prostej lampki sterowanej dotykiem. Podłącz do micro:bita pasek diod RGB oraz dwie kulki z folii aluminiowej. Każde jednoczesne dotknięcie dwóch kulek z folii powinno sprawiać, że pasek diod będzie świecił na biało o około 25% jaśniej niż poprzednio. Zatem pierwsze dotknięcie kulek włączy pasek na 25% jasności, drugie – na 50%, trzecie – na 75%, a czwarte – na 100%, natomiast piąte dotknięcie wyłączy pasek.

Zad. 9.3. Rozbuduj program z zadania 9.2, aby w dowolnym momencie można było wyłączyć lampkę przyciskiem A lub włączyć ją na 100% jasności przyciskiem B.

Podsumowanie

Nareszcie wyjaśniła się zagadka kolorowych przewodów, które do tej pory cały czas leżały w pudełku i nie były potrzebne do wykonania żadnych ćwiczeń. Jak widać, uniwersalne krokodylki mają dość dużo zastosowań. Dobrze jest jednak opanować najpierw podstawy micro:bita, aby przez przypadek czegoś nie uszkodzić – dlatego zajęliśmy się nimi dopiero teraz.

Czy wpis był pomocny? Oceń go:

Średnia ocena 4.7 / 5. Głosów łącznie: 118

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ć!

Gratuluję przejścia całego kursu podstaw programowania micro:bita! Tak, za nami już wszystkie części – omówiliśmy najważniejsze podstawy tworzenia programów oraz moduły Grove, które były częścią zestawów przeznaczonych do tej serii. Jestem przekonany, że dla wielu osób ten kurs będzie świetnym początkiem do dalszej nauki programowania!

Autor kursu: Damian Szymański

Nawigacja kursu

Jeśli jesteście zainteresowani dalszymi częściami tego kursu, to koniecznie dajcie znać w komentarzach, czy się Wam podobało i czego szukacie. Więcej modułów? Więcej zadań programistycznych? A może chcielibyście poznać jeszcze więcej bloczków? Wszystkie sugestie mile widziane!

banany, dźwięk, krokodylki, kursmicrobit, micro:bit

Trwa ładowanie komentarzy...