Lampka – wersja zaawansowana

Rozwińmy projekt naszej interaktywnej lampki dodając

Czas trwania – 45-90min
Poziom trudności – ŚREDNI

Wstęp

Witaj młody koderze! Dzisiaj zbudujemy zaawansowaną lampkę na bazie poprzedniego projektu! Jeżeli masz jeszcze jakiekolwiek problemy, to dzisiaj wszystko ci się… ROZJAŚNI!

Przygotowanie

Moduły:

  • LOFI Brain
  • Czujnik odległości
  • Dioda LED x2
  • Kabel USB

Podłączenie:

  • Czujnik odległości → port Distance
  • Dioda → OUTPUT3
  • Dioda → OUTPUT4 (opcjonalnie)
  • Zasilanie robota → kabel USB → wyjście USB w komputerze

Przebieg

Zmienne – co to takiego?

W tym programie wystartujemy z poziomu, który udało nam się osiągnąć w poprzedniej lekcji. Zbudowaliśmy tam prostą lampkę zapalającą się, gdy czujnik światła zmierzył poziom światła poniżej określonej wartości. Nasz program wyglądał następująco:

1_poziom_startowy

Nasza lampka składała się z dwóch diod LED podłączonych do wyjść OUTPUT1 i OUTPUT2.

Zastanówmy się jak sprawić by diody zapalały się i gasły powoli? W LOFI Blocks nie ma przecież bloku Ustaw PŁYNNIE wyjście. Musimy więc jego działanie odtworzyć przy pomocy innych bloków.

Ponieważ wartość jasności diody będzie się dynamicznie zmieniać, najprościej nam będzie wyrazić przy pomocy ZMIENNEJ

ZMIENNA to jedna z najbardziej podstawowych pojęć wykorzystywanych w programowaniu. Tworząc zmienną mówimy komputerowi, że od teraz w naszym programie jakąś wartość będziemy określać odpowiednią nazwą – jak w tym wypadku JASNOSC, odtąd gdziekolwiek w programie wpiszemy to słowo, komputer sam będzie wstawiał zamiast niego odpowiednią wartość liczbową.
Kiedy najbardziej przydaje się używanie zmiennych?

  • Gdy stale, w trakcie wykonywania programu zmieniamy jakąś wartość liczbową – tak jak w obecnym przykładzie jasność diody stalem jest zmieniana zależnie od wskazań czujnika światła
  • Gdy jakąś wartość wykorzystujemy w kilku miejscach programu – tak jak w tym przykładzie gdy dwie diody LED świecą z tą samą jasnością

Żeby mieć do dyspozycji zmienną, musimy ją stworzyć. Można to zrobić w zakładce ZMIENNE i klikając na przycisk Stwórz zmienną…

2_stworz_zmienna

Wyświetli się okienko w którym możesz wpisać dowolną nazwę dla swojej zmiennej. Ja nazwę ją jasnosc. Nie powinniśmy używać polskich znaków takich jak ś, ę, ć, ż, ź, ą, ó. Zmienna też powinna składać się jednego słowa a jeśli koniecznie chcemy użyć w nazwie zmiennej większej ilości słów najlepiej napisać je z pomocą podkreślnika np. JASNOSC_DIODY, nie używamy w nazwach zmiennych “spacji”.

Po utworzeniu zmiennej będziemy mogli wykorzystać dodatkowe bloki.

3_bloki_zmiennych

Blok Ustaw jasnosc na… pozwala nam przypisać jakąś wartość do zmiennej.

Blok Zmień jasnosc o… zmienia wartość zmiennej o dowolną liczbę.

Widoczny blok jasnosc pozwala przypisać wartość zmiennej do innego bloku. Zobacz przykład poniżej. Wykorzystamy go później w naszym programie.

4_przyklad_zmiennej

Świetnie! Mam nadzieję, że udało ci się utworzyć zmienną! Ruszamy dalej!

Używanie zmiennych w programie

Co ty na to, żebyśmy użyli jednego z wcześniej opisanych bloków związanych ze zmiennymi? Nasz obecny program zapala lampkę, gdy oświetlenie spadnie poniżej 20. Przebudujmy obecne bloki tak, by za każdym razem, gdy oświetlenie czujnika będzie mniejsze niż 20 to zwiększymy wartość zmiennej jasnosc o 1. W przypadku gdy oświetlenie będzie większe niż 20 będziemy zmniejszali zmienną jasnosc o 1.

Przenieśmy również blok Ustaw wyjście… poza blok warunkowy Jeżeli… w przeciwnym razie…. Nasz program powinien wyglądać teraz tak:

5_przyklad_manipulacji_zmienna

Jeżeli uruchomisz program, to diody zapalą się z maksymalną mocą. Żeby uzależnić je od zmiennej musimy zastosować blok wspomniany w poprzednim podpunkcie.

6_przyklad_uzycia_zmiennej

Włącz program i zobacz jak zmienia się moc świecenia diody. Jeżeli zaraz po włączeniu programu diody się zapalą – znajdź szybko jakieś źródło światła – jeżeli zaś będą wyłączone to przykryj fotorezystor dłonią. Zauważ jednak, że program nie zawsze działa… czyżby….

LOFI ROBOT, MAMY PROBLEM!

Korzystanie z konsoli i wykrywanie błędów

Mimo, że cały program, który zbudowaliśmy wygląda bardzo poprawnie to czasami robotowi zajmuje bardzo dużo czasu zanim zacznie rozświetlać lub gasić diody. Co może być tego przyczyną? Ciężko stwierdzić bez odpowiednich narzędzi, ale na szczęście do dyspozycji mamy KONSOLĘ.

Konsola jest formą komunikacji robota z komputerem za pomocą tekstu. Poprośmy robota, żeby powiedział nam jak podczas działania programu wygląda zmienna jasnosc.

Blok konsoli znajdziesz w zakładce KONTROLA. Umieść go w programie.

7_blok_konsoli

Symbol tzw. ptaszka pozwala włączyć i wyłączyć wyświetlanie danych w konsoli. Pole tekstowe na prawo od nazwy bloku pozwala wpisać tekst – etykietę, który ułatwi przekazywanie informacji, a miejsce na blok służy do załączenia wartości bloku, którego wartość chcemy wyświetlić.

Niech robot napisze do nas taką informację:

“Zmienna jasnosc: wartość zmiennej

W polu tekstowym umieść zatem taki tekst: “Zmienna jasnosc”

A potem przenieś blok zmiennej jasnosc, tam gdzie jest wolne miejsce na blok. Całość powinna wyglądać następująco:

8_przyklad_uzycia_konsoli

Teraz musimy otworzyć konsolę. Jest ona połączona z MONITOREM CZUJNIKÓW i otwieramy ją tą samą ikoną z menu po prawej stronie.

Po włączeniu programu zauważysz, że gdy nasz czujnik jest oświetlony to wartość zmiennej spada poniżej 0.

9_zmienna_ponizej_0

Natomiast jeśli przykryjesz czujnik dłonią to wartość zmiennej będzie nieustannie wzrastała.

10_zmienna_powyzej_100

Zauważ, że wartości w bloku USTAW WYJŚCIE … działają tylko w zakresie od 0 do 100, wszelkie wartości poza tym zakresem są ignorowane.

Oto właśnie odkryliśmy przyczynę dziwnego działania naszego robota. Po prostu gdy dioda już dawno świeci z pełną mocą, do zmiennej jasnosc ciągle dodawana jest liczba 1. Gdy chcemy by dioda zgasła musimy poczekać baaaaaaaardzo długo aż wartość zmiennej spadnie do 0. Masz jakiś pomysł jak to naprawić? Podpowiedź: blok warunkowy w duecie z blokiem Ustaw zmienną!

Działający program

Gdy zmienna jasnosc będzie większa niż 100, chcemy by automatycznie ustawiała się na wartość 100. Podobnie zrobimy gdy jej wartość spadnie poniżej 0 – ustawimy ją na 0. Spróbujmy wykonać to na blokach.

Jak widzisz, dodałem warunek ustawiający zmienną jasnosc na 100 gdy zmienna będzie większa. Twoim zadaniem jest dodanie podobnego warunku – ustawienie zmiennej na 0, gdy będzie mniejsza niż 0. Cały program umieściłem poniżej.

12_dzialajacy_program

Jeżeli udało ci się wykonać płynnie rozświetlającą się lampkę to GRATULACJE!

Spróbuj pobawić się szybkością zapalania i gaśnięcia diod poprzez zmianę liczby w bloku Zmień jasnosc o… – pamiętaj, że możesz używać również liczb po przecinku takich jak 0.5.

Miłej zabawy!

ZOBACZ GOTOWY PROJEKT

O autorze scenariusza:

LOFI Robot

Ten artykuł napisały dla Ciebie roboty znad morza. Najprawdopodobniej miały na imię Maciek i Tomek.