Termometr

Z support
Skocz do: nawigacja, szukaj

Wyzwanie: G STACJA POGODOWA

Projekt: G01 TERMOMETR

Przypomnij sobie[edytuj]

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

  • liczby losowe,
  • instrukcje warunkowe złożone,
  • operatory logiczne,
  • operatory porównania,
  • serwomechanizmy,
  • wyświetlacz,
  • zmienne.

Cel projektu[edytuj]

Podstawowym elementem stacji pogodowej jest termometr. Wykorzystaj odczytane temperatury do zbudowania statystyk.

Zadanie 1[edytuj]

Podłączenie modułów[edytuj]

Serwo jest modułem cyfrowym. Podłącz go pod specjalny pin umieszczony pod pinami oznaczonymi literką D (Digital).

Opis[edytuj]

W pierwszym kroku sprawdź na jakie kąty należy ustawić serwo aby wskazały każdą z temperatur umieszczonych na planszy. Następnie napisz program, który wylosuje jedną z temperatur z planszy i zapisze ją do zmiennej. Wylosowana liczba będzie wykorzystana w wielu miejscach dlatego dobrym pomysłem jest zapisanie jej w nowej stworzonej zmiennej. W losowaniu wykorzystaj bloczek <WYLOSUJ LICZBĘ CAŁKOWITĄ> podając odpowiedni zakres temperatur.

Pamiętaj, żeby górnym zakresem liczb do wylosowania była maksymalna liczba na planszy plus 1. Plus 1 jest potrzebne aby np. z zakresu [5;35] była szansa wylosowania liczby 35.

Na końcu po wylosowaniu temperatury wskaż ją za pomocą serwa. Dobrym pomysłem jest użycie ostatniej instrukcji opóźniającej losowanie kolejnej temperatury aby była szansa na zauważenie wskazania aktualnej przez serwo.

Pseudokod[edytuj]

Wylosowana-liczba=wylosuj-liczbe-calkowita-z-zakresu(-15:36)
jeśli Wylosowana-liczba < -10 //-15
   serwo…ustaw-na 15
w przeciwnym razie jeśli wylosowana-liczba < -5 //-10
   serwo…ustaw-na 30
…
czekaj 20s

Zadanie 2[edytuj]

Podłączenie modułów[edytuj]

Czujnik temperatury jest modułem analogowym. Podłącz go pod pin oznaczony literką A (Analog).

Opis[edytuj]

Odczytaj temperaturę za pomocą czujnika temperatury i wypisz ją na wyświetlaczu.

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]

Włącz wyświetlacz
wyczyść wyświetlacz
ustaw kursor
wypisz na wyświetlaczu = czujnik temperatury
wyświetl na wyświetlaczu
czekaj 2s 

Zadanie 3[edytuj]

Opis[edytuj]

Wykorzystaj wyniki testów z pierwszego zadania i pod zmienną wylosowana-temperatura przypisz wartość odczytaną z czujnika temperatury.

Zadanie 4[edytuj]

Opis[edytuj]

Wykorzystaj wyświetlacz aby narysować wykres składający się z odczytanych co 2s temperatur. Na początku stwórz wykres kropkowy, gdzie każda odczytana temperatura to kolejna kropka na wykresie. Następnie połącz kropki linią aby otrzymać wykres liniowy.

Najlepszym pomysłem jest dodanie każdej nowej temperatury na wykres i narysowanie temperatur z tablicy na wyświetlaczu. Pamiętaj, że wartości tablicy należy zadeklarować przy tworzeniu tablicy. Przyjmij rozmiar tablicy jako 10 i na początku wypełnij 10 wierszy wartością 0.

W prostszej wersji bez użycia tablic należy zrobić to w taki sposób. W bloczku <INICJALIZUJ> musimy umieścić kilka instrukcji dotyczących wyświetlacza, które nie mogą się powtarzać, bo będą powodować, że tylko jedna temperatura będzie na wykresie. Czyli umieszczamy <WŁĄCZ WYŚWIETLACZ> i <WYCZYŚĆ WYŚWIETLACZ>.

Warto utworzyć funkcję, która przeliczy aktualnie wylosowaną temperaturę na współrzędne punktu na wykresie. Szerokość wyświetlacz to 64px a długość to 128px.

Potrzebne zmienne:[edytuj]

  • „odleglosc-od-kolejnej-temp”: 128-dlugosc wyświetlacza, 20-liczba wylosowa… temp, czyli 128/20=1,6. Potrzebne będzie zaokrąglenie.
  • „pixel-na-temp”: można wylosować temp z zakresu (-15:36), czyli max 51 temperatur, tak więc dzielimy szerokość wyświetlacza przez liczbę temp, czyli 64/51=1,25. Potrzebne będzie zaokrąglenie.
  • „wsp-x-ostatniej-liczby”: potrzebne aby kolejna kropka była w takiej samej odległości od poprzedniej

Pseudokod 1[edytuj]

Inicjalizuj 
   włącz wyświetlacz
   wyczyść wyświetlacz
   odleglosc-od-kolejnej-temp = 128/20 = 1,6
   pixel-na-temp = 64/51 = 1,25 
   wsp-x-ostatniej-liczby = (-1) * odleglosc-od-kolejnej-temp
   poprzednia-wylosowana-temp = -100
losowanie….
narysuj-punkt-na-wyswieltaczu()
2s
Fun narysuj-punkt-na-wyswieltaczu()
   wsp-x-ostatniej-liczby = wsp-x-ostatniej-liczby + odleglosc-od-kolejnej-temp
   rysuj_punkt(x=wylosowana-liczba* pixel-na-temp, y= wsp-x-ostatniej-liczby)
   wyświetl-na-wyswietlaczu
	

Pseudokod 2[edytuj]

Natomiast aby wykres był liniowy trzeba zmodyfikować funkcję „narysuj-punkt-na-wyswieltaczu()”. Dodatkowo potrzebna byłaby zmienna z ostatnio wylosowaną temperaturą.

Fun narysuj-punkt-na-wyswieltaczu()
   rysuj-linie(
		x1= poprzednia-wylosowana-temp*pixel-na-temp,
		y1= wsp-x-ostatniej-liczby,
		x2= wylosowana-liczba* pixel-na-temp,
		y2= wsp-x-ostatniej-liczby + odleglosc-od-kolejnej-temp)
   wsp-x-ostatniej-liczby = wsp-x-ostatniej-liczby + odleglosc-od-kolejnej-temp
   rysuj_punkt(x=wylosowana-liczba* pixel-na-temp, y= wsp-x-ostatniej-liczby)
   wyświetl-na-wyswietlaczu