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:
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ą…
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.
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.
Ś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:
Jeżeli uruchomisz program, to diody zapalą się z maksymalną mocą. Żeby uzależnić je od zmiennej musimy zastosować blok wspomniany w poprzednim podpunkcie.
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.
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:
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.
Natomiast jeśli przykryjesz czujnik dłonią to wartość zmiennej będzie nieustannie wzrastała.
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.
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!