RgNt5Mfc9aHvi
Zdjęcie przedstawia płytkę Arduino z podłączonymi kabelkami w wyświetlaczem pokazującym godzinę, temperaturę, dzień tygodnia oraz datę. Nad wyświetlaczem widoczne są kolorowe kabelki z wtyczkami wpięte w panel.

I_R_W15_M03 Przykładowe projekty

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Sygnalizacja świetlna z Arduino

Sprawdźmy, jak działa sygnalizacja świetlna i jak za pomocą Arduino sterować kolejnością zapalania się świateł. W środowisku Tinkercad zbudujemy układ z diodami LED, zaprogramujemy jego działanie i uruchomimy symulację przypominającą prawdziwe światła drogowe.

1
Dodajemy płytkę stykową

Na liście komponentów, znajdującej się po prawej stronie okna, znajdź płytkę stykową. Kliknij na nią i umieść w głównym oknie.

R2Q1QAELJAQ54
Płytka prototypowa
Źródło: Contentplus.pl Sp. z o.o., Płytka prototypowa.
Dodajemy diody LED

Znajdź i dodaj do naszej płytki stykowej diody LED. Z listy rozwijanej wybierz kolory, odpowiadające kolorom sygnalizacji świetlnej.

R1RC6V57O39EQ
Źródło: Contentplus.pl Sp. z o.o., Diody LED.
Dodajemy przycisk

Do płytki stykowej dodaj przycisk Tact switch.

R17O7O498BBE5
Źródło: Contentplus.pl Sp. z o.o., Dodany przycisk.
Dodajemy rezystory

Do każdej anody diody LED dodaj rezystor i ustaw jego wartość na 220 omega. Dodaj również rezystor o wartości 10 komega do jednej z nóżek przycisku. Drugą jego nóżkę podłącz do ujemnej szyny płytki stykowej.

R17SXKJ59X65T
Źródło: Contentplus.pl Sp. z o.o., Dodane rezystory.
Łączymy diody przewodami

Łączymy katody diod z ujemną szyną płytki stykowej.

RDBVKBAT99DP5
Źródło: Contentplus.pl Sp. z o.o., Przewody łączące diody LED.
Dodajemy płytkę Arduino

Szukamy na liście moduł Arduino Uno i wstawiamy go do okna symulacji.

R17OCDBQHKETB
Źródło: Contentplus.pl Sp. z o.o., Arduino.
Łączymy płytkę z diodami

Łączymy pin GND Arduino Uno z ujemną szyną płytki.

Następnie łączymy wolne nóżki rezystorów oraz przycisk z modułem Arduino Uno. 

Diody dla przejścia dla pieszych:

  • rezystor diody czerwonej z pinem D6,

  • rezystor diody zielonej z pinem D7. 

Diody dla aut:

  • rezystor diody czerwonej z pinem D8,

  • rezystor diody żółtej z pinem D9,

  • rezystor diody zielonej z pinem D10.

    R12ZHFBTELSDT
    Źródło: Contentplus.pl Sp. z o.o., Gotowy układ.

Kodujemy układ

Przejdźmy teraz do napisania kodu. 

Rozpocznijmy od utworzenia zmiennych. Każda zmienna przechowuje numer pinu, do którego podłączono odpowiednią diodę lub przycisk. Dzięki temu później łatwiej sterować elementami układu.

Linia 1. const int autaZielonaPin znak równości 10 średnik. Linia 2. const int autaZoltaPin znak równości 9 średnik. Linia 3. const int autaCzerwonaPin znak równości 8 średnik. Linia 5. const int ludzieZielonaPin znak równości 7 średnik. Linia 6. const int ludzieCzerwonaPin znak równości 6 średnik. Linia 8. const int przycisk znak równości 2 średnik.

Funkcja setup() wykonuje się tylko raz, po uruchomieniu Arduino. Polecenie pinMode() określa sposób działania pinu. Diody są ustawione jako OUTPUT, ponieważ Arduino wysyła do nich sygnał.

Linia 1. pinMode otwórz nawias okrągły autaZielonaPin przecinek OUTPUT zamknij nawias okrągły średnik.

Następnie ustawiany jest stan początkowy sygnalizacji. Na początku samochody mają zielone światło, a piesi czerwone. Pozostałe diody są wyłączone. 

Linia 1. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 2. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.

Funkcja loop() jest wykonywana przez cały czas działania programu. Arduino sprawdza, czy pieszy nacisnął przycisk. Polecenie digitalRead() odczytuje stan przycisku. Wartość HIGH oznacza, że przycisk został naciśnięty.

Linia 1. if otwórz nawias okrągły digitalRead otwórz nawias okrągły przycisk zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły.

Po naciśnięciu przycisku zielone światło dla samochodów zostaje wyłączone, a włącza się żółte: 

Linia 1. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 2. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik.

Po kilku sekundach zapala się czerwone światło dla samochodów. 

Linia 1. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik. Linia 2. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.

Polecenie delay() zatrzymuje program na określony czas. Na przykład:

Linia 1. delay otwórz nawias okrągły 5000 zamknij nawias okrągły średnik.

Gdy samochody mają czerwone światło, piesi otrzymują zielone: 

Linia 1. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 2. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik.

Przed zakończeniem czasu przejścia zielona dioda dla pieszych zaczyna migać:

Linia 1. for otwórz nawias okrągły licznik znak równości 0 średnik licznik otwórz nawias ostrokątny 5 średnik licznik plus plus zamknij nawias okrągły.

Pętla wykonuje te same polecenia pięć razy. Dioda jest naprzemiennie wyłączana i włączana: 

Linia 1. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 2. delay otwórz nawias okrągły 500 zamknij nawias okrągły średnik. Linia 4. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 5. delay otwórz nawias okrągły 500 zamknij nawias okrągły średnik.

Miganie informuje pieszych, że za chwilę zapali się czerwone światło.

Po zakończeniu przejścia piesi otrzymują czerwone światło. Dla samochodów najpierw zapalają się jednocześnie światła czerwone i żółte, a następnie zielone.

Program wraca wtedy do stanu początkowego i ponownie czeka na naciśnięcie przycisku.

Poniżej przedstawiono gotowy kod programu.

Linia 1. prawy ukośnik asterysk Deklaracja pinów asterysk prawy ukośnik. Linia 3. prawy ukośnik prawy ukośnik Sygnalizacja dla samochodów. Linia 4. const int autaZielonaPin znak równości 10 średnik. Linia 5. const int autaZoltaPin znak równości 9 średnik. Linia 6. const int autaCzerwonaPin znak równości 8 średnik. Linia 8. prawy ukośnik prawy ukośnik Sygnalizacja dla pieszych. Linia 9. const int ludzieZielonaPin znak równości 7 średnik. Linia 10. const int ludzieCzerwonaPin znak równości 6 średnik. Linia 12. prawy ukośnik prawy ukośnik Przycisk dla pieszych. Linia 13. const int przycisk znak równości 2 średnik. Linia 15. int licznik średnik. Linia 17. void setup otwórz nawias okrągły zamknij nawias okrągły. Linia 18. otwórz nawias klamrowy. Linia 19. prawy ukośnik asterysk Ustawienie wyjść asterysk prawy ukośnik. Linia 20. pinMode otwórz nawias okrągły autaZielonaPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 21. pinMode otwórz nawias okrągły autaZoltaPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 22. pinMode otwórz nawias okrągły autaCzerwonaPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 24. pinMode otwórz nawias okrągły ludzieZielonaPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 25. pinMode otwórz nawias okrągły ludzieCzerwonaPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 27. prawy ukośnik asterysk Przycisk jest wejściem asterysk prawy ukośnik. Linia 28. pinMode otwórz nawias okrągły przycisk przecinek INPUT zamknij nawias okrągły średnik. Linia 30. prawy ukośnik asterysk Stan początkowy sygnalizacji asterysk prawy ukośnik. Linia 31. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 32. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik. Linia 33. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 35. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 36. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 37. zamknij nawias klamrowy. Linia 39. void loop otwórz nawias okrągły zamknij nawias okrągły. Linia 40. otwórz nawias klamrowy. Linia 41. prawy ukośnik asterysk Sprawdzenie przecinek czy pieszy nacisnął przycisk asterysk prawy ukośnik. Linia 42. if otwórz nawias okrągły digitalRead otwórz nawias okrągły przycisk zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły. Linia 43. otwórz nawias klamrowy. Linia 44. prawy ukośnik asterysk Krótkie opóźnienie eliminujące drgania styków asterysk prawy ukośnik. Linia 45. delay otwórz nawias okrągły 50 zamknij nawias okrągły średnik. Linia 47. if otwórz nawias okrągły digitalRead otwórz nawias okrągły przycisk zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły. Linia 48. otwórz nawias klamrowy. Linia 49. prawy ukośnik asterysk Wyłączenie zielonego światła dla samochodów. Linia 50. i włączenie żółtego asterysk prawy ukośnik. Linia 51. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 52. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 54. delay otwórz nawias okrągły 5000 zamknij nawias okrągły średnik. Linia 56. prawy ukośnik asterysk Włączenie czerwonego światła dla samochodów asterysk prawy ukośnik. Linia 57. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik. Linia 58. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 60. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik. Linia 62. prawy ukośnik asterysk Włączenie zielonego światła dla pieszych asterysk prawy ukośnik. Linia 63. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 64. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 66. delay otwórz nawias okrągły 5000 zamknij nawias okrągły średnik. Linia 68. prawy ukośnik asterysk Miganie zielonego światła dla pieszych asterysk prawy ukośnik. Linia 69. for otwórz nawias okrągły licznik znak równości 0 średnik licznik otwórz nawias ostrokątny 5 średnik licznik plus plus zamknij nawias okrągły. Linia 70. otwórz nawias klamrowy. Linia 71. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 72. delay otwórz nawias okrągły 500 zamknij nawias okrągły średnik. Linia 74. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 75. delay otwórz nawias okrągły 500 zamknij nawias okrągły średnik. Linia 76. zamknij nawias klamrowy. Linia 78. prawy ukośnik asterysk Zatrzymanie ruchu pieszych asterysk prawy ukośnik. Linia 79. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 80. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 82. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik. Linia 84. prawy ukośnik asterysk Przygotowanie samochodów do ruszenia dwukropek. Linia 85. jednocześnie świeci czerwone i żółte asterysk prawy ukośnik. Linia 86. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 88. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik. Linia 90. prawy ukośnik asterysk Włączenie zielonego światła dla samochodów asterysk prawy ukośnik. Linia 91. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik. Linia 92. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik. Linia 93. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik. Linia 95. prawy ukośnik asterysk Oczekiwanie na zwolnienie przycisku asterysk prawy ukośnik. Linia 96. while otwórz nawias okrągły digitalRead otwórz nawias okrągły przycisk zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły. Linia 97. otwórz nawias klamrowy. Linia 98. delay otwórz nawias okrągły 10 zamknij nawias okrągły średnik. Linia 99. zamknij nawias klamrowy. Linia 100. zamknij nawias klamrowy. Linia 101. zamknij nawias klamrowy. Linia 102. zamknij nawias klamrowy.

Uruchamiamy symulację wciskając przycisk Uruchom symulację.