Przejazd kolejowy

Z support
Skocz do: nawigacja, szukaj

Wyzwanie: B DWORZEC KOLEJOWY

Projekt: B01 PRZEJAZD KOLEJOWY

Przypomnij sobie[edytuj]

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

  • funkcje,
  • generowanie dźwięków,
  • instrukcja warunkowa prosta,
  • pętle,
  • urządzenia wyjścia,
  • wyświetlacz.

Cel projektu[edytuj]

Celem projektu jest stworzenie przejazdu kolejowo-drogowego. Rogatki będą sterowane za pomocą przycisku i serwa. Natomiast sygnał wizualny i dźwiękowy będzie dodatkową informacją dla samochodów, że należy się zatrzymać, bo z oddali zbliża się pociąg.

Zadanie 1[edytuj]

Podłączenie modułów[edytuj]

Dioda jest modułem cyfrowym. Podłącz ją pod pin z literką D (Digital).

Opis[edytuj]

Aby dioda mrugała należy użyć bloczka <DIODA LED> z opcją włącz/wyłącz oraz bloczek <CZEKAJ>. Bloczek <CZEKAJ> jest potrzebny, aby zauważyć wyraźne zaświecenie i zgaszenie diody. Pamiętaj aby ten bloczek umieścić nie tylko pomiędzy włącz-wyłącz diodę, ale także pomiędzy wyłącz-włącz. Jeśli gdzieś ta instrukcja zostanie pominięta to nasze oko nie będzie w stanie zauważyć migania.

Pseudokod[edytuj]

Dioda-led włącz
czekaj 300 ms
dioda-led wyłącz
czekaj 300 ms

Zadanie 2[edytuj]

Podłączenie modułów[edytuj]

Głośniczek jest modułem cyfrowym. Podłącz go do pinu z literką D (Digital). Pamiętaj, żeby podłączyć głośniczek do pinu z znaczkiem ~. Dzięki temu będziesz mógł sterować częstotliwością lub wysokością dźwięku.

Opis[edytuj]

W tym zadaniu skorzystaj z bloczka <GENERUJ DŹWIĘK>. Dobrym pomysłem będzie umieszczenie powyżej instrukcji po bloczku <DIODA LED> z opcją włącz.

Pseudokod[edytuj]

Dioda-led włącz
generuj-dźwięk
czekaj 300 ms
dioda-led wyłącz
czekaj 300 ms

Zadanie 3[edytuj]

Podłączenie modułów[edytuj]

Serwo jest modułem cyfrowym. Podłącz go pod specjalne miejsce pod serwo, umieszczone pod pinami cyfrowymi.

Opis[edytuj]

Kolejnym zadaniem jest dodanie szlabanów do istniejącego systemu wizualno-dźwiękowego. Na początku sprawdź jak zachowuje się serwo. Następnie napisz instrukcje, które będą podnosiły i opuszczały szlaban do 10s.

Pseudokod[edytuj]

Serwo-przesun 90
czekaj 10s
serwo-przesun 0
czekaj 10s

Zadanie 4[edytuj]

Podłączenie modułów[edytuj]

Przycisk jest modułem cyfrowym. Podłącz go do pinu oznaczonego literką D (Digital).

Opis[edytuj]

Zmień sposób sterowania szlabanami z czasowego na przycisk. Koniecznie wykorzystaj instrukcję warunkową. Dodatkowo aby szlabany pracowały wolno, należy wykorzystać pętle i krokowo opuszczać lub podnosić ramię serwa. Pamiętaj aby dodać także opóźnienie wykonania kolejnej iteracji pętli. W przeciwnym wypadku nie zauważysz krokowego otwierania/zamykania szlabanów.

Pseudokod[edytuj]

Jeśli naciśnięto przycisk
   licz w górę z i od  i=0 do i<91 co 10
      serwo-przesuń i
      czekaj 1s
w przeciwnym razie 
   licz w dół z i od i=90 do i>0 co 10
      serwo-przesuń i
      czekaj 1s

Zadanie 5[edytuj]

Opis[edytuj]

W pierwszym kroku należy dodać zmienną stan-szlabanów i ustawić jej wartość tylko raz na początku programu w bloku inicjuj. Następnie w zależności od wartości zmiennej zrób przeciwną akcję i ustaw wartość zmiennej na nowo.

Pseudokod[edytuj]

Jeśli stan-szlabanów = „zamknięte”
   licz w dół z i od i=90 do i>0 co 10
      serwo-przesuń i
      czekaj 1s
   stan-szlabanów = „otwarte”
w przeciwnym razie 
   licz w górę z i od  i=0 do i<91 co 10
      serwo-przesuń i
      czekaj 1s
   stan-szlabanów = „zamknięte”

Zadanie 6[edytuj]

Opis[edytuj]

Jedyną zmianą jest zwiększenie parametru „krok” w pętli for dla operacji podnoszenia szlabanów.

Pseudokod[edytuj]

licz w dół z i od i=90 do i>0 co 20
   serwo-przesuń i

Zadanie 7[edytuj]

Podłączenie modułów[edytuj]

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

Opis[edytuj]

W tym zadaniu należy zmienić warunek w instrukcji warunkowej dotyczący przycisku na wartości zwracane przez czujnik obrotu po wskazaniu na pola „otwarte”, „zamknięte”. Wcześniej jednak należy sprawdzić jakie wartości przyjmuje czujnik obrotu dla tych dwóch stanów.

Pseudokod[edytuj]

Jeśli czujnik-obrotu < 300
   // zamknij szlaban
w przeciwnym razie 
   // otwórz szlaban