Fotoradar

Z support
Skocz do: nawigacja, szukaj

Wyzwanie: C BEZPIECZEŃSTWO

Projekt: C03 FOTORADAR

Przypomnij sobie[edytuj]

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

  • czas,
  • instrukcja warunkowa prosta,
  • instrukcja warunkowa złożona,
  • operatory arytmetyczne,
  • operatory porównania,
  • tablice,
  • urządzenia wejścia,
  • urządzenia wyjścia,
  • wyświetlacz,
  • zmienne.

Cel projektu[edytuj]

Bezpieczeństwo na drogach. Jak ustrzec się przed piratami drogowymi? Najlepszym sposobem jest zainstalowanie fotoradarów na naszych drogach. Zaprogramuj jeden z nich.

Zadanie 1[edytuj]

Podłączenie modułów[edytuj]

Czujnik odległości jest modułem analogowym. Podłącz go pod specjalnie przygotowany pin, który znajduje się po lewej stronie od pinów oznaczonych literką A (Analog).

Opis[edytuj]

Do wzoru na prędkość potrzebujemy dwóch parametrów tj. droga i czas. W pierwszej kolejności należy zbadać jakie wartości przyjmuje czujnik odległości. Jaki jest jego zasięg. Następnie ustalamy drogę. Sprawdzamy jaka wartość zwraca czujnik odległości na początku tego odcinka drogi a jaka na końcu. Niestety płytka nie posiada wbudowanego zegara czasu rzeczywistego dlatego jednym sposobem na uzyskanie czasu jest wykorzystanie bloczka <MILISEKUNDY OD STARTU>. Pobierz wartość z tego bloczka na początku i końcu obliczanej drogi a następnie wylicz prędkość pojazdu. Napisz funkcję, która na podstawie zbadanych parametrów obliczy prędkość pojazdu.

Pseudokod[edytuj]

jeśli czujnik-odległości > 300 i czujnik-odległości < 400
   czas-początek = milisekundy od startu
   powtarzaj-aż czujnik-odległości > 700
      czas-przejazdu = milisekundy od startu – czas-początek
      oblicz-prędkość()
Fun oblicz-prędkość()
   wypisz-na-monitorze-portu-szeregowego = droga/czas-przejazdu

Program[edytuj]

C03z1.png

Zadanie 2[edytuj]

Opis[edytuj]

Po ustaleniu dopuszczalnej prędkości w poprzednim zadaniu, zapisz jej wartość w zmiennej. Zmienną „dopuszczalna-predkosc” możesz umieścić w bloczku inicjuj. Jej wartość nie będzie na razie zmieniana.

Zadanie 3[edytuj]

Podłączenie modułów[edytuj]

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

Opis[edytuj]

Po obliczeniu aktualnej prędkości pojazdu, czas na jej weryfikację. Napisz instrukcje warunkowe bazujące na zmiennej z dopuszczalną prędkością. Jeśli pojazd przekroczył tą prędkość to zapal czerwoną diodę. W przeciwnym wypadku zapal diodę zieloną.

Zadanie 4[edytuj]

Opis[edytuj]

Oprócz diody warto także poinformować kierowców jaka jest ich prędkość, czyli wytłumaczyć czy konkretna dioda została włączona.

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).

Dodaj informację o prędkości przed instrukcją warunkową dotyczącą diody. Jeśli wewnątrz warunków dotyczących diod chcesz dodać jeszcze jakiś komentarz to warto przesunąć instrukcję wyświetl na wyświetlaczu po zakończeniu instrukcji warunkowych.

Zadanie 5[edytuj]

Podłączenie modułów[edytuj]

Dioda to moduł cyfrowy. Podłącz ją pod pin oznaczony literką D (Digital).

Opis[edytuj]

Kiedy błyska lampa fotoradaru? Wtedy gdy jest przekroczona prędkość, czyli w naszym przypadku w momencie zapalenia diody czerwonej. Dodaj włączenie na chwilę (np. 1500ms) żółtej diody w tym warunku.

Zadanie 6[edytuj]

Opis[edytuj]

Zbieranie statystyk pozwala sprawdzić czy fotoradar był w tym miejscu naprawdę potrzebny. Jeśli z czasem jest coraz mniej przekroczeń prędkości znaczy, że jego miejsce jest prawidłowe.

W celu zrobienia statystyk warto stworzyć kilka zmiennych. Pamiętaj aby te zmienne inicjować tylko raz na początku programu. Zliczaj ile jest kierowców poprawnych a ilu piratów drogowych. Dodatkowo w tablicy zapisz wartości o jakie prawidłowa prędkość została przekroczona. Pamiętaj, że aby korzystać z tablic przy jej tworzeniu musisz ustawić jej rozmiar. W zadaniu została zaproponowana liczba 10. Aby kontrolować w jakie miejsce tablicy zapisać kolejnego pirata drogowego, stwórz zmienną w której przechowasz informacje, który indeks tablicy został właśnie zapisany. Pamiętaj aby wyzerować tą zmienną jeżeli jej wartość będzie równa rozmiarowi tablicy. Czyli aby kierowca 11 został zapisany na miejscu kierowcy poprzednio pierwszego. Na końcu po skontrolowaniu kolejnego kierowcy wypisz dodatkowo aktualnie zebrane statystyki.

Aby program był bardziej czytelny możesz napisać funkcję do obliczania o ile średnio prędkość została przekroczona. Funkcja powinna dodać wszystkie przekroczenia i podzieli przez ich liczbę. Musimy dodać tutaj dodatkową zmienną, w której będzie przechowywana liczba przekroczeń większych od 0. Sytuacja ta dotyczy zebrania mniej niż 10 przekroczeń, gdzie tablica jest jeszcze wypełniona liczba 0. Początek zbierania statystyk.

Zadanie 7[edytuj]

Podłączenie modułów[edytuj]

Czujnik obrotu jest modułem analogowym. Podłącz go pod pin oznaczony literą A (Analog). Natomiast przycisk jest modułem cyfrowym, więc podłącz go pod pin oznaczony literą D (Digital).

Opis[edytuj]

W kolejnym zadaniu zmienna „dopuszczalna-predkosc” będzie ustawiana za pomocą czujnika obrotu i zatwierdzana przyciskiem. Na początku zbadaj jakie wartości przyjmuje czujnik obrotu dla każdego z obszarów i ustal dla nich dopuszczalne prędkości. Następnie po naciśnięciu przycisku i ustawieniu zmiennej „dopuszczalna-predkosc” uruchom program napisany w poprzednich zadaniach.

Pseudokod[edytuj]

jeśli naciśnieto przycisk 
   jeśli czujnik-obrotu < 200
      dopuszczalna-predkosc = 15
   w przeciwnym wypadku jeśli czujnik-obrotu > 200 i czujnik-obrotu < 400
      dopuszczalna-predkosc  = 20
   …

Program[edytuj]

C03z7.png