Budzik

Z support
Skocz do: nawigacja, szukaj

Wyzwanie: F MIŁY PORANEK

Projekt: F01 BUDZIK

Przypomnij sobie[edytuj]

Przed rozpoczęciem tego projektu warto wrócić do lekcji:

  • instrukcja warunkowa prosta,
  • instrukcja warunkowa złożona,
  • operatory logiczne,
  • operatory porównania,
  • pętle,
  • PWM,
  • tablice,
  • wyświetlacz,
  • zmienne.

Cel projektu[edytuj]

Napisz znienawidzony przez wszystkich budzik, który każdego ranka karze wyjść spod ciepłej kołderki.

Zadanie 1[edytuj]

Opis[edytuj]

Stwórz zmienną w której zapiszesz za ile sekund ma zadzwonić alarm. Natomiast na wyświetlaczu wyświetl malejący czas. Wykorzystaj pętle do odliczania czasu. Nie zapomnij dodać opóźnienia na jako ostatniej instrukcji w pętli.

Przypomnij sobie jakie bloczki są potrzebne do prawidłowej pracy z wyświetlaczem:[edytuj]

  • włącz wyświetlacz (domyślnie wyświetlacz jest wyłączony, ta instrukcja powinna być użyta tylko raz),
  • wyczyść wyświetlacz (instrukcja wyczyści poprzednie zapiski na wyświetlaczu, np. logo producenta),
  • ustaw kursor (pozwala na wypisanie tekstu zawsze w tym samym miejscu),
  • wypisz na wyświetlaczu (wypisanie tekstu dołączonego z prawej strony bloczka),
  • wyświetl na wyświetlaczu (wyświetlenie powyżej zdefiniowanych tekstów i figur).

Pseudokod[edytuj]

Czas-alarmu = 15
Licz w dół z i od i=15 do i >=0 co 1
   włącz wyświetlacz
   wyczyść wyświetlacz
   ustaw kursor
   wypisz na wyświetlaczu = „alarm uruchomi się za „
   wypisz na wyświetlaczu = i
   wypisz na wyświetlaczu = „ sekund”
   wyświetl na wyświetlaczu 
   czekaj 1s

Zadanie 2[edytuj]

Podłączenie modułów[edytuj]

Głośniczek jest modułem cyfrowym. Podłącz go do pinu oznaczonego literką D (Digital) i znaczkiem ~. Znaczek ~ pozwala na większe możliwości sterowania np. częstotliwością lub wysokością dźwięku.

Opis[edytuj]

Na początku zapoznaj się z działaniem bloczka <GENERUJ DŹWIĘK> i znajdź takie parametry aby znaleźć dźwięk charakterystyczny dla alarmu budzika. Następnie zastosuj bloczek po zakończeniu odliczania w dół.

Zadanie 3[edytuj]

Podłączenie modułów[edytuj]

Czujnik odległości jest modułem analogowym. Podłącz go pod specjalny pin umieszczony po lewej stronie od pinów oznaczonych literką A (Analog).

Opis[edytuj]

Na początku zapoznaj się z działaniem czujnika odległości wypisując jego wartości na monitorze portu szeregowego. Sprawdź jaką wartość zwraca czujnik gdy ktoś zamacha przed jego „oczkami”. Następnie zastosuj pętlę w której po odliczeniu czasu wybicia alarmu dźwięk będzie odtwarzany tak długo dopóki czujnik ruchu nie wykryje gestu. Po zatrzymaniu alarmu możesz wypisać komunikat na wyświetlaczu i dodać instrukcję opóźnienia przed odliczaniem kolejnego alarmu.

Pseudokod[edytuj]

powtarzaj-aż czujnik-odległości > 600 
   generuj-dźwięk

Zadanie 4[edytuj]

Opis[edytuj]

Zapoznaj się z nową formą sterowania dźwiękiem czyli pwm – sterowanie jego natężeniem. Wykorzystaj bloczek <MODULUJ PWM>. Wskaż pod który pin podłączony jest głośniczek a następnie ustaw odpowiednią wartość drugiego parametru czyli natężenia. Im większa wartość tym natężenie jest większe. Aby co 2s zwiększać wartość natężenia warto użyć zmiennej aby zapisać w niej aktualną wartość natężenia. Pamiętaj aby zwiększać jej wartość.

Pseudokod[edytuj]

Aktualne-natezenie = 0
powtarzaj-aż czujnik-odległości > 600 
   moduluj pwm = akualne-natezenie 
   czekaj 2s
   aktualne-natezenie = aktualne-natezenie + 10

Zadanie 5[edytuj]

Podłączenie modułów[edytuj]

Przycisk jest modułem cyfrowym. Podłącz go pod pin oznaczony literką D (Digital).

Opis[edytuj]

Tym razem do zatrzymania alarmu użyj przycisku. Zamień instrukcje dotyczące czujnika odległości na przycisk.

Zadanie 6[edytuj]

Opis[edytuj]

Ustaw zmienną czas-alarm za pomocą wartości jaką wprowadzi użytkownik poprzez zakładkę monitor. Wprowadzoną wartość zatwierdź przyciskiem i uruchom dalsze instrukcje programu.

Zadanie 7[edytuj]

Podłączenie modułów[edytuj]

Diody są modułami cyfrowymi. Podłącz je pod piny oznaczone literką D (Digital). Natomiast czujnik obrotu jest modułem analogowym. Podłącz go pod pin oznaczony literką A (Analog).

Opis[edytuj]

W pierwszym kroku utwórz tablicę z kolorami jakie zostały umieszczone na planszy w postaci małych kółek wokół miejsca na czujnik obrotu. Pamiętaj, że aby utworzyć tablicę musisz najpierw stworzyć zmienną tablicową o konkretnym typie wartości jakie będą zapisane w tablicy. Następnie przypisz do zmiennej wartości jakie maja znaleźć się w tablicy za pomocą bloczka <TABLICA TYPU>.

Następnie na naciśnięcie przycisku do wyłączenia alarmu wywołaj funkcję, która wylosuje kolor z tablicy i wypisze na wyświetlaczu zagadkę np. „wskaż kolor zielony”. Kolejno napisz funkcję sprawdzającą wskazaną odpowiedź. Funkcja powinna mapować wskazany zakres czujnika obrotu na kolor i zwracać informacje czy użytkownik poprawnie wskazał kolor. Sprawdź jakie wartości zwraca czujnik obrotu przy pomocy monitora portu szeregowego.

Śpioch po wskazaniu rozwiązania zagadki za pomocą czujnika obrotu, zatwierdza swój wybór za pomocą powtórnego naciśnięcia przycisku. Gdy prawidłowo wskaże rozwiązanie to włącz zieloną diodę. W przeciwnym razie włącz czerwoną diodę i zwiększ natężenie alarmu.

Warto dodać zmienną typu prawda/fałsz ponow-alarm, która będzie potrzebna aby ponownie włączyć alarm jeśli użytkownik źle wskaże rozwiązanie zagadki.

Pseudokod[edytuj]

Tab-kolorow = [bialy, zolty, rozowy, czerwony, brazowy, zielony, niebieski, czarny]
powtarzaj-aż nie naciśnięto przycisk lub ponow-alarm=true
   … 	
wyświetl-zagadke-kolory()
Fun wylosuj-kolor()
   wylosowany-kolor = tab-kolorow[wylosuj-liczbe-calkowita-z-zakresu(0, dlugosc(tab-kolorow)-1)]
Fun wyświetl-zagadke-kolory()
   wylosuj-kolor()
   włącz wyświetlacz
   wyczyść wyświetlacz
   ustaw kursor
   wypisz na wyświetlaczu = „Wskaz kolor ”
   wypisz na wyświetlaczu(NL) = wylosowany-kolor 
   wyświetl na wyświetlaczu
   powtórz-aż nie naciśnięto przycisk
      generuj-dźwięk
      czekaj 2s
   sprawdz-odpowiedz-na-zagadke-kolory() 	
Fun sprawdz-odpowiedz-na-zagadke-kolory()
   jeśli (wylosowany-kolor=”bialy” i czujnik-obrotu < 200) lub (wylosowany-kolor=”zolty” i 
	    czujnik-obrotu > 200 i czujnik-obrotu < 400) lub …
      włącz wyświetlacz
      wyczyść wyświetlacz
      ustaw kursor
      wypisz na wyświetlaczu = „BRAWO – prawidłowo wskazany kolor ”
      wypisz na wyświetlaczu(NL) = wylosowany-kolor 
      wyświetl na wyświetlaczu 
      dioda led zielona włącz 
      ponow-alarm = false
   w przeciwnym razie  
      dioda led czerwona włącz 
      ponow-alarm = true

Zadanie 8[edytuj]

Opis[edytuj]

Druga zagadka jest trudniejsza. Polega na rozwiązaniu równania matematycznego i wskazanie odpowiedzi za pomocą czujnika obrotu.

Na początku stwórz tablice, której wartościami będą liczby jakie możesz wskazać za pomocą czujnik obrotu. Następnie napisz funkcję, która wylosuję jedną z liczb i wyświetli użytkownikowi takie zadanie matematyczne aby jego rozwiązaniem była wylosowana liczba.

Śpioch analogicznie jak do poprzedniego zadania po wskazaniu prawidłowej odpowiedzi wyłącza alarm. Natomiast w przeciwnym razie alarm działa nadal.