Sterowanie bramą garażową

Z support
Skocz do: nawigacja, szukaj

Wyzwanie: E INTELIGENTNY DOM

Projekt: E03 STEROWANIE BRAMĄ GARAŻOWĄ

Przypomnij sobie[edytuj]

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

  • generowanie dźwięków,
  • instrukcja warunkowa prosta,
  • operatory logiczne,
  • operatory porównania,
  • pętla,
  • serwomechanizmy,
  • urządzenia wejścia,
  • urządzenia wyjścia,
  • zmienne.

Cel projektu[edytuj]

Inteligentna brama garażowa, którą możesz otworzyć na przycisk lub czujnik zbliżającego się pojazdu to marzenie nie jednego z nas. Czy nie łatwiej zimą otworzyć bramę automatycznie niż wychodzić w mróz aby otworzyć ją ręcznie. Napisz taki system.

Zadanie 1[edytuj]

Podłączenie modułów[edytuj]

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

Opis[edytuj]

Po przejrzeniu kursu „serwomechanizmy” możesz dowiedzieć się, że bloczek <SERWO…PRZESUŃ> przesuwa ramię serwa o kąt jaki zostanie podany w parametrze wspomnianego bloczka. Pomyśl, jeśli chcesz podnieść bramę to kąt ramienia musi być ustawiony na 0 stopni, natomiast jeśli chcesz opuścić to 90 stopni.

Zadanie 2[edytuj]

Podłączenie modułów[edytuj]

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

Opis[edytuj]

Aby operować przyciskiem należy użyć instrukcji warunkowych z warunkiem „jeśli naciśnięto przycisk to zrób akcję”. Dodatkowo należy pamiętać aby nie zepsuć bramy poprzez zamknięcie zamkniętej wcześniej bramy. Czyli gdy serwo jest aktualnie w pozycji 90 stopni to nie możemy po naciśnięciu przycisku wydać instrukcji aby przesunąć je o kolejne 90 stopni. Aby zabezpieczyć taką sytuację użyj zmiennej do zapisania aktualnego stanu bramy garażowej – otwarta/zamknięta. Na początku w bloczku <INICJUJ> ustaw początkową wartość serwa na 90 stopni czyli zamknięta brama i ustaw taki stan bramy w zmiennej.

Pamiętaj aby zmieniać status bramy po każdym naciśnięciu przycisku, aby w zmiennej znajdowała się zawsze aktualna wartość.

Pseudokod[edytuj]

Inicjuj
   serwo-przesuń 90
   status-bramy = „zamknieta”
	
Jeśli naciśnięto przycisk
   jeśli status-bramy == „zamknieta”
      serwo-przesuń 0
      status-bramy = „otwarta”
   w przeciwnym razie 
      serwo-przesuń  90
      status-bramy = „zamknieta”

Zadanie 3[edytuj]

Podłączenie modułów[edytuj]

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

Opis[edytuj]

Zamień przycisk na czujnik odległości. W pierwszej kolejności przetestuj jak działa czujnik odległości wypisując wartości jakie zwraca przy obiekcie blisko i daleko od jego „oczek”. Wartości wypisz na monitorze portu szeregowego.

Napisz instrukcję warunkową jeśli samochód pojawi się blisko zamkniętej bramy to serwo ja otworzy. Po otwarciu zamknij bramę po 5 sekundach. Pamiętaj aby domyślnie brama cały czas była zamknięta.

Aby brama wolno się otwierała wykorzystaj pętle.

Pseudokod[edytuj]

Jeśli czujnik-odległości < 300
   For i=90;i>=0;i-=10
      serwo… przesuń i 
      czekaj 1s
   status-bramy =”otwarta”
   czekaj 5s
   Serwo…przesuń 90
   status-bramy =”zamknieta”

Zadanie 4[edytuj]

Podłączenie modułów[edytuj]

Diody to moduły cyfrowe. Podłącz je pod piny oznaczone literką D (Digital).

Opis[edytuj]

Aby dioda mrugała należy w pętli na przemian włączać ją i wyłączać co np. 0,5 sekundy. W napisanym programie jest już pętla więc wystarczy go wzbogacić o instrukcje skojarzone z mruganiem diody. Po otwarciu daj sygnał kierowcy, że można wjechać poprzez zapalenie zielonej diody. Natomiast gdy brama jest zamknięta włącz tylko czerwoną diodę.

Pseudokod[edytuj]

jeśli czujnik-odległości < 300
   For i=90;i>=0;i-=10
      serwo…przesuń i 
      dioda led czerwona włącz
      czekaj 0,5s
      dioda led czerwona wyłącz
      czekaj 0,5s
   dioda led zielona włącz 
   status-bramy =”otwarta”
   czekaj 5s
   Serwo…ustaw-na 90
   dioda led zielona wyłącz
   dioda led czerwona włącz
   status-bramy =”zamknieta”

Zadanie 5[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]

Dodanie dźwięku z głośniczka to jedna instrukcja/bloczek <GENERUJ DŹWIĘK>, który najlepiej jest umieścić przed jednym z bloczków „czekaj” w pętli for.

Zadanie 6[edytuj]

Podłączenie modułów[edytuj]

Czujnik światła jest modułem analogowym. Podłącz go pod pin oznaczony literką A (Analog). Natomiast dioda jest modułem cyfrowym. Podłącz ją pod pin oznaczony literką D (Digital).

Opis[edytuj]

Na początku należy sprawdzić jakie wartości przyjmuje czujnik światła gdy jest ciemno, a jakie gdy jest jasno. W tym celu najlepiej skorzystać z monitora portu szeregowego. Następnie po ustaleniu wartości jaka zwraca czujnik światła gdy jest ciemno możemy napisać odpowiedni warunek po przyjeździe właściciela do domu – zapal światło (diodę) albo zgaś.

Pseudokod[edytuj]

Jeśli czujnik-swiatla > 200
   dioda led żółta włącz
w przeciwnym razie
   dioda led żółta wyłącz