Układ, który zbudujemy oraz oprogramujemy będzie realizować następujący scenariusz:
Pojazdy mają zielone światło. Pieszy, który stoi na czerwonym świetle, naciska przycisk, aby zmienić je na zielone.
Światło dla pojazdów zmienia się na żółte. Kierowcy są w ten sposób informowani, że należy się zatrzymać, ponieważ za chwilę światło będzie czerwone.
Światło dla pojazdów zmienia się na czerwone; piesi mają światło zielone.
Światło zielone dla pieszych zaczyna migać. Pojazdy nadal mają czerwone światło.
Światło dla pieszych zmienia się na czerwone. Z kolei kierowcy widzą palące się równocześnie światła czerwone i żółte.
Po osiągnięciu punktu 5. wracamy do stanu sygnalizacji opisanego w punkcie 1.
Elementy potrzebne do budowy
płytka Arduino Uno
płytka stykowa
kabel USB typu A‑B
czerwone diody LED (2 sztuki)
żółta dioda LED
zielone diody LED (2 sztuki)
włącznik zwierny
rezystory 220 Ωomega (5 sztuk)
rezystor 10 kΩomega
przewody i zworki połączeniowe
Zacznijmy od umieszczenia na płytce prototypowej trzech diod LED symbolizujących światła dla samochodów oraz dwóch odpowiadających światłom dla pieszych. Załóżmy, że diody, które będą stanowiły sygnalizator dla pojazdów, podłączymy do pinów 8., 9. i 10., natomiast diody dla pieszych podepniemy do pinów 6. i 7. Oczywiście możesz wybrać inne piny, jednak musisz zmodyfikować wówczas kod szkicu, który przedstawimy niżej.
RCnpednxBalgj1
Schemat przedstawia płytkę Arduino i połączone z nią diody. Płytka Arduino przedstawiona jest na schemacie jako pionowo ustawiony prostokąt z pinami przy obu dłuższych pionowych bokach. Piny z lewej to od góry: IOREF, RESET, 3.3V, 5V, GND, GND, VIN, przerwa, A0, A1, A2, A3, A4, A5. Piny z prawej to od góry: AREF, GND, 13, 12, ~11, ~10, ~9, 8, przerwa, 7, ~6, ~5, 4, ~3, 2, TX-1, RX-0. Połączenia w schemacie składają się z łamanych złożonych z odcinków poziomych i pionowych, łączących odpowiednie piny. Na pionowych odcinkach składowych każdego połączenia narysowano od góry cienki prostokąt symbolizujący opornik, obok którego napisano 220 omów, a poniżej znajduje się trójkąt z ukośnymi równoległymi strzałkami po lewej stronie. Trójkąt ustawiony jest podstawą do góry, a naprzeciw podstawy, przy wierzchołku dolnym, znajduje się poziomy odcinek o takiej długości, jak podstawa trójkąta. Znak trójkąta ze strzałkami i z poziomym odcinkiem symbolizuje diodę świecącą LED. Obok każdego takiego połączenia umieszczono podpis: „LED (czerwona)” lub „LED (zielona)” lub „LED (żółta)”. Połączenia w schemacie są następujące: masa (GND) z płytki Arduino z ujemną szyną płytki stykowej, piny 8., 9. i 10. z płytką stykową.
Połączmy diody zgodnie ze schematem.
1. Łączymy masę (GND) z płytki Arduino z ujemną szyną płytki stykowej.
R1b24VKoSYgwE
Zdjęcie przedstawia połączenie masy (GND) z płytki Arduino z ujemną szyną płytki stykowej.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
2. Łączymy piny 8., 9. i 10. z płytką stykową. Numery wierszy na płytce prototypowej nie mają znaczenia (możesz wybrać inne niż pokazano na zdjęciu). Warto natomiast używać kolorowych przewodów – na początku pracy z płytką Arduino bardzo ułatwia to konstruowanie i oprogramowywanie układów.
RKOWeU7rSoArc
Zdjęcie przedstawia połączenia pinów 8., 9. i 10. z płytką stykową. Każdy z przewodów jest innego koloru.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Wpinamy rezystory 220 Ωomega. Jedną nóżkę każdego z nich umieszczamy w szynie danych, do której podłączyliśmy już przewód, a drugą wpinamy do drugiej szyny danych.
RJPMoVRsL4ITz
Zdjęcie przedstawia moduł Arduino oraz płytkę stykową połączone podpiętymi przewodami. Na zdjęciu widoczne są także wpięte rezystory 220 Ω omega. Jedną nóżkę każdego z nich umieszczona jest w szynie danych, do której podłączone są przewody, a druga wpięta jest do drugiej szyny danych.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
4. Wpinamy do płytki stykowej diody LED. Pamiętajmy, aby anoda znajdowała się od strony rezystora, a katoda miała kontakt elektryczny z szyną masy.
RmaYVIoaqmcL7
Zdjęcie przedstawia moduł Arduino z płytką stykową połączone podpiętymi przewodami. Na zdjęciu znajdują się także wpięte rezystory oraz wpięte do płytki stykowej trzy diody LED: zielona, żółta i czerwona symulujące światła dla pojazdów. Anoda znajduje się od strony rezystora, a katoda ma kontakt elektryczny z szyną masy.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Część układu symulująca światła dla pojazdów jest gotowa. Pora na światła dla pieszych. Łączymy przewodami pin 6. i 7. z płytką stykową.
RHmmHXdqZejaF
Zdjęcie przedstawia moduł Arduino z płytką stykową połączone podpiętymi przewodami. Na zdjęciu znajdują się także wpięte rezystory oraz wpięte do płytki stykowej diody LED: zielona, żółta i czerwona symulujące światła dla pojazdów. Przewodami połączono pin 6. i 7. z płytką stykową.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Wpinamy do płytki stykowej rezystory 220 Ωomega oraz dwie diody LED. Postępujemy tak samo jak w poprzednich punktach.
R1QEXpYWjp8Ph
Zdjęcie przedstawia moduł Arduino z płytką stykową połączone podpiętymi przewodami. Na zdjęciu znajdują się pięć wpiętych rezystorów 220 Ω omega oraz wpięte do płytki stykowej diody LED: zielona, żółta i czerwona symulujące światła dla pojazdów, następnie dalej zielona i czerwona symulujące światła dla pieszych. Przewodami połączono piny z płytką stykową.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Sygnalizatory są podłączone. Brakuje jeszcze jednego elementu – przycisku, dzięki któremu piesi będą mogli włączać zielone światło. Zastosujemy włącznik chwilowywłącznik chwilowywłącznik chwilowy, zwany również przyciskiem RESET.
RrYNZTQOnorMF
Zdjęcie przedstawia mikrowłącznik arduino, inaczej włącznik chwilowy lub przyciskiem RESET, składający się z przycisku, sześciennej głównej części i czterech styków. Wszystkie cztery styki są ponumerowane cyframi od 1 do 4.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Naciśnięcie przycisku chwilowego, powoduje zwarcie styków 2–3 oraz 1–4 i przepływ prądu. Styki 1–2 oraz 3–4 są natomiast zawsze zwarte. Możesz jednak spotkać się również z przyciskiem rozwiernym – w jego przypadku styki są zawsze zwarte, a naciśnięcie powoduje ich rozwarcie.
Narysujmy na schemacie przycisk, który posłuży do sterowania światłami. Zwróć uwagę na linię reprezentującą przewód łączący wyprowadzenie napięcia 5 V z pinem 2. W miejscach, w których linia ta przecina się z innymi liniami, pojawia się zaokrąglenie. Nie oznacza to, że zastosowaliśmy specjalny przewód albo że go wygięliśmy. Jest to po prostu informacja, że między przecinającymi się na schemacie liniami nie ma kontaktu elektrycznego.
R2l3DrjFSyEWN1
Schemat przedstawia płytkę Arduino i połączone z nią diody. Płytka Arduino przedstawiona jest na schemacie jako pionowo ustawiony prostokąt z pinami przy obu dłuższych pionowych bokach. Piny z lewej to od góry: IOREF, RESET, 3.3V, 5V, GND, GND, VIN, przerwa, A0, A1, A2, A3, A4, A5. Piny z prawej to od góry: AREF, GND, 13, 12, ~11, ~10, ~9, 8, przerwa, 7, ~6, ~5, 4, ~3, 2, TX-1, RX-0. Połączenia w schemacie składają się z łamanych złożonych z odcinków poziomych i pionowych, łączących odpowiednie piny. Na pionowych odcinkach składowych każdego połączenia narysowano od góry cienki prostokąt symbolizujący opornik, obok którego napisano 220 omów, przy czym w jednym połączeniu (jest to połączenie z pinem 2.) mamy rezystor 10 omów. Poniżej znajduje się trójkąt z ukośnymi równoległymi strzałkami po lewej stronie. Trójkąt ustawiony jest podstawą do góry, a naprzeciw podstawy, przy wierzchołku dolnym, znajduje się poziomy odcinek o takiej długości, jak podstawa trójkąta. Znak trójkąta ze strzałkami i z poziomym odcinkiem symbolizuje diodę świecącą LED. Obok każdego takiego połączenia umieszczono podpis: „LED (czerwona)” lub „LED (zielona)” lub „LED (żółta)”. Połączenia w schemacie są następujące: masa (GND) z płytki Arduino z ujemną szyną płytki stykowej, piny 2., 8., 9. i 10. z płytką stykową.
Łączymy pin 2. z płytką stykową – styk przewodu wkładamy w otwór szyny danych.
8. Podłączamy zasilanie do tej samej kolumny, do której jest podpięty pin 2. Następnie, zachowując jeden wiersz przerwy (nóżki włącznika są szeroko rozstawione, co zobaczysz za chwilę), wpinamy styk przewodu. Drugi przewód umieszczamy w wyprowadzeniu napięcia 5 V na płytce Arduino Uno.
RnWiVoE3L9T2P
Zdjęcie przedstawia moduł Arduino z płytką stykową połączone podpiętymi przewodami. Na zdjęciu znajdują się pięć wpiętych rezystorów 220 Ω omega oraz wpięte do płytki stykowej diody LED: zielona, żółta i czerwona symulujące światła dla pojazdów, następnie dalej zielona i czerwona symulujące światła dla pieszych. Przewodami połączono piny z płytką stykową. Podłączono zasilanie do tej samej kolumny, do której jest podpięty pin 2. Następnie, odstępnie jednego wiersza, wpięto styk przewodu. Drugi przewód umieszczono w wyprowadzeniu napięcia 5 V na płytce Arduino Uno.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Wpinamy włącznik chwilowy pionowo: powinien się on znaleźć na środku płytki. W poziomie natomiast nóżki powinny być w tych samych wierszach, w których podłączono wcześniej przewody.
RGM6mgA8F53Z2
Na zdjęciu przedstawiono płytkę stykową, do której podpięte są przewody, rezystory oraz diody LED. Wpięto włącznik chwilowy pionowo na środku płytki. Nóżki są wpięte w tych samych wierszach, w których podłączono wcześniej przewody.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
10. Podłączamy rezystor 10 kΩomega do masy, wpinając go w tym samym wierszu, w którym znajduje się przycisk RESET. Rezystor ten służy do utrzymania na pinie numer 2 stanu niskiego. Bez tego połączenia na pinie 2. mogłoby pojawić się przypadkowe napięcie. W rezultacie bez wciskania przycisku zostałaby wykonana sekwencja poleceń odpowiadająca za włączenie zielonego światła dla pieszych.
RbY0T9cOnOeQU
Zdjęcie przedstawia płytkę stykową z podpiętymi przewodami, rezystorami oraz diodami LED i włącznikiem. Podłączono także rezystor 10 kΩ omega do masy, wpinając go w tym samym wierszu, w którym znajduje się przycisk RESET.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
Wydaje się, że rezystor jest źle podłączony, ponieważ powinien być wpięty w szynę, w której znajduje się przewód niebieski (biegnący od pinu numer 2 płytki). Rzeczywiście, powinien być on tam wpięty – i tak właśnie jest. Jak pamiętamy, włącznik chwilowy ma dwie pary styków zawsze zwarte.
Programowanie układu
Układ jest gotowy. Pozostaje go zaprogramować. Możemy podłączyć płytkę Arduino do komputera. Na każdym etapie programowania będziemy bowiem sprawdzać, czy poszczególne elementy sygnalizacji działają poprawnie.
Uruchamiamy aplikację Arduino IDE. Pojawia się nowy szkic, w którym są wpisane domyślne funkcje, czyli setup() oraz loop(). Za chwilę będziemy je modyfikować.
Wcześniej spójrz jednak na nazwę pliku. Domyślnie składa się ona z liczb oznaczających dzień i miesiąc oraz z litery. Pierwszy szkic w danym dniu oznaczany jest literą A, każdy kolejny – następnymi literami. Zmień jednak nazwę na taką, która będzie informowała o zawartości szkicu. W tym celu wydaj polecenie Plik | Zapisz jako i podaj nazwę szkicu (na przykład „sygnalizator”). Możesz zapisać plik w folderze domyślnym lub wybrać inny. My zostawiliśmy ten, który zasugerowała aplikacja.
Stałe oraz zmienne
Stałe oraz zmienne
Podczas programowania będziemy używać stałych i zmiennych różnych typów. Stałymi w znanym ci już szkicu Blink były: OUTPUT, HIGH oraz LOW. Są to specyficzne stałe Arduino związane z operacjami na liniach portów mikrokontrolera. Inne stałe, których nazwy zaczerpnięto bezpośrednio z języka C, muszą mieć nadane określone wartości, których nie wolno później modyfikować. W kodach szkiców Arduino stałe są oznaczane kolorem niebieskim.
Zmienne, czyli wartości, które możemy modyfikować, są oznaczane w szkicach Arduino kolorem czarnym. Każda zmienna przechowuje informację ściśle określonego rodzaju. Do dyspozycji mamy następujące typy zmiennych:
bit – przyjmuje wartości 0 lub 1,
bool – (skrót od boolean) przyjmuje wartość true (prawda) lub false (fałsz),
byte – przechowuje wartość całkowitą, 8‑bitową, należącą do zakresu 0–255,
char – przechowuje pojedynczy znak alfanumeryczny,
int – przechowuje liczby całkowite z zakresu –32 768 do +32 767,
long – przechowuje wartości od –2 147 483 648 do 2 147 483 647.
W szkicu Blink zmienną jest numer pinu, do którego podłączamy diodę LED. W oryginalnym szkicu numer pinu pojawia się tylko trzy razy. Jednak w bardziej rozbudowanych programach zmienna może występować nawet kilkadziesiąt razy lub częściej. W takiej sytuacji powinna być ona zadeklarowana na samym początku szkicu.
Numer pinu jest najwyżej liczbą dwucyfrową (i do tego całkowitą), więc odpowiednim typem dla takiej zmiennej jest byte lub int. Definiując zmienną warto podawać nazwę, która jasno wskazuje, co zmienna ma przechowywać. Przykładowo, jeśli zmienna ma wskazywać pin, do którego podłączamy czerwoną diodę, możemy nazwać ją Pin_czerwona lub czerwonaPin. W nazwach zmiennych nie używamy spacji – zastępujemy je znakiem podkreślenia. Po wprowadzeniu typu i nazwy zmiennej wpisujemy znak równości (=), następnie podajemy wartość i kończymy deklarację średnikiem. Później we wszystkich miejscach w szkicu, w których znajduje się numer pinu, wpisujemy nazwę zmiennej. Co to daje?
Załóżmy, że zmieniliśmy nieco koncepcję projektu i nie chcemy korzystać już z pinu 13., lecz z pinu 11.. Jeżeli przepniemy przewód z pinu 13. do pinu 11., to dioda LED na płytce Arduino będzie świeciła nadal, lecz dioda umieszczona na zewnątrz już nie. Wszędzie, gdzie pojawiał się numer pinu 13, należałoby zamienić go na 11. Dzięki deklaracji zmiennej wystarczy jednak wprowadzić tę wartość tylko raz.
1. Wszystkie elementy szkicu warto opatrywać komentarzami. Pisząc program zaczynamy od informacji, że poniżej zadeklarujemy zmienne. Komentarz umieszczamy wewnątrz sekwencji znaków „/*” oraz „*/” lub po dwóch ukośnikach //, w przypadku gdy komentarz jest jednowierszowy. Zmiennymi będą wszystkie piny, do których zostaną podpięte diody oraz włącznik chwilowy. Numery pinów to liczby całkowite, więc zastosujemy zmienne typu byte lub int. Aby z kodu jasno wynikało, które piny odpowiadają za świecenie sygnalizatora dla pojazdów, a które dla przechodniów, w nazwach zmiennych wpisujemy na przykład ciągi „auta” i „ludzie”:
Linia 1. prawy ukośnik asterysk deklaracja zmiennych asterysk prawy ukośnik.
Linia 2. int autaZielonaPin znak równości 10 średnik.
Linia 3. int autaZoltaPin znak równości 9 średnik.
Linia 4. int autaCzerwonaPin znak równości 8 średnik.
Linia 5. int ludzieZielonaPin znak równości 7 średnik.
Linia 6. int ludzieCzerwonaPin znak równości 6 średnik.
Linia 7. int przycisk znak równości 2 średnik.
/* deklaracja zmiennych */
int autaZielonaPin = 10;
int autaZoltaPin = 9;
int autaCzerwonaPin = 8;
int ludzieZielonaPin = 7;
int ludzieCzerwonaPin = 6;
int przycisk = 2;
2. W funkcji setup() należy określić, które piny mają być wejściami, a które wyjściami. W przypadku sygnalizatorów wszystkie piny, do których podłączono diody, będą pinami wyjściowymi (OUTPUT). Natomiast wyłącznik będzie wykonywał określone zadanie – jego naciśnięcie spowoduje wprowadzenie danych do systemu sygnalizacji – i wpływał na działanie diod. Pin przycisku jest zatem pinem wejściowym (INPUT):
W ciele funkcji loop() ustalamy, jak mają się zachowywać diody. Początkowo powinny być włączone: zielone światło dla pojazdów oraz czerwone dla pieszych. Pozostałe diody należy wyłączyć. Dwa pierwsze piny mają mieć zatem ustawiony wysoki stan napięcia (HIGH), a kolejne – stan niski (LOW):
Linia 1. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. prawy ukośnik asterysk początkowe stany napięcia na pinach przecinek do których podłączone są diody asterysk prawy ukośnik.
Linia 3. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 6. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 7. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 8. zamknij nawias klamrowy.
void loop() {
/* początkowe stany napięcia na pinach,do których podłączone są diody */
digitalWrite(autaZielonaPin, HIGH);
digitalWrite(autaZoltaPin, LOW);
digitalWrite(autaCzerwonaPin, LOW);
digitalWrite(ludzieZielonaPin, LOW);
digitalWrite(ludzieCzerwonaPin, HIGH);
}
4. Weryfikujemy poprawność szkicu i przesyłamy go do płytki Arduino.
RGEUlAs12Fye2
Zdjęcie przedstawia płytkę stykową z podpiętymi przewodami, rezystorami oraz diodami LED i włącznikiem. Dioda zielona dla pojazdów oraz dioda czerwona dla pieszych świecą równocześnie.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Pieszy powinien nacisnąć przycisk w celu wymuszenia zmiany świateł. Aby sprawdzić, czy przycisk został naciśnięty zastosujemy instrukcję warunkową if.
Instrukcja warunkowa if
Instrukcja warunkowa if
Linia 1. if otwórz nawias okrągły wyrażenie logiczne zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. prawy ukośnik prawy ukośnik instrukcja wykonywana jeśli wyrażenie jest prawdziwe.
Linia 3. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 4. prawy ukośnik prawy ukośnik instrukcja wykonywana jeśli wyrażenie nie jest prawdziwe.
Linia 5. zamknij nawias klamrowy.
if (wyrażenie logiczne) {
// instrukcja wykonywana jeśli wyrażenie jest prawdziwe
} else {
// instrukcja wykonywana jeśli wyrażenie nie jest prawdziwe
}
Jak działa instrukcja if? Najpierw sprawdzana jest wartość wyrażenia logicznego (warunku). Jeżeli jest ono prawdziwe, zostaje wykonana pierwsza instrukcja. Jeżeli warunek nie jest spełniony, to wykonywana jest instrukcja podana po słowie else (w przeciwnym wypadku).
W przypadku sygnalizatora będziemy sprawdzać, czy włącznik chwilowy jest naciśnięty. Jeżeli tak, to światła powinny się zmieniać. W przeciwnym razie nadal powinno palić się światło zielone dla pojazdów i czerwone dla przechodniów.
Wewnątrz funkcji loop(), za stanami pinów, które określiliśmy wcześniej, wstawiamy instrukcję warunkową if. Na razie nie będzie ona działać, ponieważ brakuje informacji, jakie operacje mają zostać wykonane. Dotychczas ustalaliśmy stany pinów korzystając z funkcji digitalWrite(). Teraz sytuacja się zmienia – musimy odczytać stan pinu, do którego podłączony jest włącznik. Zastosujemy funkcję digitalRead():
Linia 1. prawy ukośnik asterysk sprawdzenie stanu włącznika asterysk prawy ukośnik.
Linia 2. 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 otwórz nawias klamrowy.
Linia 3. prawy ukośnik asterysk zmiana koloru świateł asterysk prawy ukośnik.
Linia 4. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 5. prawy ukośnik asterysk światła bez zmian asterysk prawy ukośnik.
Linia 6. zamknij nawias klamrowy.
/* sprawdzenie stanu włącznika */
if (digitalRead(przycisk) == HIGH) {
/* zmiana koloru świateł */
} else {
/* światła bez zmian */
}
W wyrażeniu logicznym pojawia się podwójny znak równości (==). Nie jest to błąd. Podając pojedynczy znak równości przypisujemy zmiennej określoną wartość. Tak jest na samym początku szkicu, kiedy poszczególnym zmiennym przypisywaliśmy numery pinów. Natomiast podwójny znak równości służy do porównania wartości. Instrukcję należy zatem rozumieć w następujący sposób: jeśli odczytany stan pinu, na którym znajduje się włącznik, jest wysoki, to…
Po naciśnięciu przycisku światło zielone dla pojazdów ma zostać wyłączone (niski stan napięcia); powinno zapalić się za to światło żółte (wysoki stan napięcia). Światło powinno być ciągłe – zatem za pomocą argumentu funkcji delay() określamy, jak długo dioda ma się świecić. Przyjmijmy, że będzie to pięć sekund. Czas ten oczywiście wyrażamy w milisekundach.
Weryfikujemy poprawność kodu, przesyłamy go ponownie do płytki Arduino i kiedy światła będą włączone, naciskamy przycisk. Powinna się zapalić żółta dioda, a zielona zgasnąć. Po pięciu sekundach układ powróci do stanu początkowego.
Linia 1. prawy ukośnik asterysk sprawdzenie stanu włącznika asterysk prawy ukośnik.
Linia 2. 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 otwórz nawias klamrowy.
Linia 3. prawy ukośnik asterysk zmiana koloru świateł asterysk prawy ukośnik.
Linia 4. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 6. delay otwórz nawias okrągły 5000 zamknij nawias okrągły średnik.
Linia 7. zamknij nawias klamrowy.
/* sprawdzenie stanu włącznika */
if (digitalRead(przycisk) == HIGH) {
/*zmiana koloru świateł */
digitalWrite(autaZielonaPin, LOW);
digitalWrite(autaZoltaPin, HIGH);
delay(5000);
}
W sygnalizatorze dla pojazdów dioda żółta powinna się następnie wyłączyć; włączyć ma się z kolei dioda czerwona. Natomiast w sygnalizacji dla pieszych musi włączyć się dioda zielona (czerwona ma zgasnąć). Załóżmy, że damy pieszym sześć sekund na przejście przez pasy:
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.
Linia 3. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek LOW 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 6000 zamknij nawias okrągły średnik.
Jeżeli zostawimy szkic w takim stanie, to piesi na zielonym świetle będą musieli przebiegać przez ulicę. Zmiana sygnalizacji (powrót do sytuacji początkowej, czyli zatrzymanie pieszych i otwarcie drogi dla pojazdów) nastąpi bowiem nagle. Czerwone światło dla pieszych pojawi się po sześciu sekundach bez jakiegokolwiek ostrzeżenia. Musimy uprzedzić przechodniów, że światło zaraz się zmieni na czerwone. Zielone światło powinno więc zacząć migać.
Załóżmy, że światło ma się wyłączyć i włączyć pięć razy. Moglibyśmy teraz wpisać odpowiednie instrukcje, powtarzając je właśnie pięciokrotnie. W tak małym projekcie nie jest to problemem. Ale co zrobić gdy instrukcję trzeba powtórzyć sto razy? Istnieje proste rozwiązanie tego problemu. Jest nim pętla for.
Pętla for
Pętla for
Instrukcja for określa, ile razy ma zostać wykonany blok poleceń zapisany w jej ciele. Pętla korzysta ze zmiennej, której najczęściej nadaje się nazwę i - jak iterator lub „licznik”. Zmienną należy zadeklarować na samym początku szkicu. Sama pętla ma postać:
Linia 1. for otwórz nawias okrągły licznik znak równości 1 średnik licznik otwórz nawias ostrokątny znak równości n średnik licznik znak równości licznik plus 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. prawy ukośnik prawy ukośnik powtarzany blok instrukcji.
Linia 3. zamknij nawias klamrowy.
Przedstawiony zapis odczytujemy następująco: nadaj zmiennej licznik wartość początkową 1; powtarzaj instrukcje do momentu, kiedy zmienna osiągnie wartość n; w każdym kroku zwiększaj wartość zmiennej o 1.
Przyjrzyjmy się jeszcze samemu licznikowi. Zapisaliśmy tu, że licznik w każdym cyklu pętli zwiększa wartość o 1 (licznik+1). Zatem w pierwszym kroku wartość licznika to wartość początkowa 1. W drugim to już 1+1=2, w trzecim 2+1=3 itd. Kiedy licznik osiągnie wartość n, pętla zostaje skończona. Bardzo często za wartość początkową przyjmuje się 0. Wówczas zamiast zapisu <= n wprowadzamy < n.
Zobaczmy, jak będzie to wyglądało w przypadku sygnalizatora.
Zacznijmy od deklaracji licznika:
Linia 1. prawy ukośnik asterysk deklaracja zmiennych asterysk prawy ukośnik.
Linia 2. int autaZielonaPin znak równości 12 średnik.
Linia 3. int autaZoltaPin znak równości 10 średnik.
Linia 4. int autaCzerwonaPin znak równości 8 średnik.
Linia 5. int ludzieZielonaPin znak równości 7 średnik.
Linia 6. int ludzieCzerwonaPin znak równości 6 średnik.
Linia 7. int przycisk znak równości 2 średnik.
Linia 8. int licznik średnik.
/* deklaracja zmiennych */
int autaZielonaPin = 12;
int autaZoltaPin = 10;
int autaCzerwonaPin = 8;
int ludzieZielonaPin = 7;
int ludzieCzerwonaPin = 6;
int przycisk = 2;
int licznik;
9. Poniżej poprzednich instrukcji wprowadzamy pętlę for():
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 znak równości licznik plus 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 3. delay otwórz nawias okrągły 250 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 250 zamknij nawias okrągły średnik.
Linia 6. zamknij nawias klamrowy.
10. W kolejnym etapie światło dla przechodniów zmienia się z zielonego (napięcie ma być niskie) na czerwone (napięcie ma być wysokie). Po tej zmianie dajemy sygnał kierowcom, żeby przygotowali się do jazdy. Taka informacja to jednoczesne włączenie światła czerwonego i żółtego. Niech diody o tych barwach świecą na przykład przez dwie sekundy. Pamiętaj, że te instrukcje należy wpisać poniżej pętli for, a nie w jej wnętrzu.
Zapisujemy szkic ([Ctrl]+[S]), weryfikujemy jego poprawność, przesyłamy do płytki Arduino i sprawdzamy, czy sygnalizacja działa.
Linia 1. digitalWrite otwórz nawias okrągły ludzieZielonaPin 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.
Linia 3. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
11. W zasadzie na tym moglibyśmy poprzestać. Został nam jednak jeszcze „przeciwny wypadek”, czyli słowo kluczowe else w instrukcji warunkowej. Czy musimy uzupełniać szkic? W tym szczególnym przypadku nie. Możemy usunąć sekcję else{}. Jeśli chcemy jednak postępować zgodnie z zasadami sztuki, powinniśmy dopisać do programu pewne instrukcje.
Dla sygnalizatorów trzeba określić stan pinów przy założeniu, że włącznik chwilowy nie został naciśnięty, czyli jego napięcie jest niskie. Te stany będą identyczne z wprowadzonymi na samym początku pętli loop():
Linia 1. else otwórz nawias klamrowy.
Linia 2. prawy ukośnik asterysk światła bez zmian asterysk prawy ukośnik.
Linia 3. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 6. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 7. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 8. zamknij nawias klamrowy.
else {
/* światła bez zmian */
digitalWrite(autaZielonaPin, HIGH);
digitalWrite(autaZoltaPin, LOW);
digitalWrite(autaCzerwonaPin, LOW);
digitalWrite(ludzieZielonaPin, LOW);
digitalWrite(ludzieCzerwonaPin, HIGH);
}
Program jest gotowy, system sygnalizacji działa bezbłędnie, a ty wiesz coraz więcej. Nie zamykaj jednak jeszcze szkicu. Zauważ, że wszystkie instrukcje pisaliśmy rozpoczynając od lewej strony ekranu. Czy tak napisany szkic wygląda przejrzyście? Zdecydowanie nie.
Dlaczego zatem nie formatowaliśmyformatowanie koduformatowaliśmy od razu kodu? Otóż dlatego, aby pokazać, jak program formatuje go sam. Wystarczy, że wciśniesz kombinację klawiszy Ctrl+T lub wybierzesz w menu Narzędzia polecenie Automatyczny format.
Kod od razu wygląda lepiej. Pojawiły się wcięcia i widać już, gdzie zaczynają się i kończą deklaracje, funkcje i pętle. Oczywiście z automatycznego formatowania możesz skorzystać na każdym etapie programowania. Warto jednak wyrobić w sobie nawyk przesuwania na prawo wszystkiego, co rozpoczyna się nawiasem klamrowym. W Arduino zazwyczaj stosuje się przesunięcie za pomocą dwóch spacji, ale można też używać do tego klawisza Tab.
Poniżej znajduje się cały kod programu sformatowany w sposób automatyczny oraz film pokazujący działanie szkicu.
Linia 1. prawy ukośnik asterysk deklaracja zmiennych asterysk prawy ukośnik.
Linia 2. int autaZielonaPin znak równości 10 średnik.
Linia 3. int autaZoltaPin znak równości 9 średnik.
Linia 4. int autaCzerwonaPin znak równości 8 średnik.
Linia 5. int ludzieZielonaPin znak równości 7 średnik.
Linia 6. int ludzieCzerwonaPin znak równości 6 średnik.
Linia 7. int przycisk znak równości 2 średnik.
Linia 8. int licznik średnik.
Linia 10. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 11. prawy ukośnik asterysk ustawienie wejść i wyjść asterysk prawy ukośnik.
Linia 12. pinMode otwórz nawias okrągły autaZielonaPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 13. pinMode otwórz nawias okrągły autaZoltaPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 14. pinMode otwórz nawias okrągły autaCzerwonaPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 15. pinMode otwórz nawias okrągły ludzieZielonaPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 16. pinMode otwórz nawias okrągły ludzieCzerwonaPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 17. pinMode otwórz nawias okrągły przycisk przecinek INPUT zamknij nawias okrągły średnik.
Linia 18. zamknij nawias klamrowy.
Linia 20. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. prawy ukośnik asterysk początkowe stany napięcia na pinach przecinek do których podłączone są diody asterysk prawy ukośnik.
Linia 22. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 23. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 24. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 25. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 26. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 28. prawy ukośnik asterysk sprawdzenie stanu włącznika asterysk prawy ukośnik.
Linia 29. 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 otwórz nawias klamrowy.
Linia 30. prawy ukośnik asterysk zmiana koloru świateł asterysk prawy ukośnik.
Linia 31. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 32. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 33. delay otwórz nawias okrągły 5000 zamknij nawias okrągły średnik.
Linia 34. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 35. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 36. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 37. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 38. delay otwórz nawias okrągły 6000 zamknij nawias okrągły średnik.
Linia 40. for otwórz nawias okrągły licznik znak równości 0 średnik licznik otwórz nawias ostrokątny 5 średnik licznik znak równości licznik plus 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 42. delay otwórz nawias okrągły 250 zamknij nawias okrągły średnik.
Linia 43. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 44. delay otwórz nawias okrągły 250 zamknij nawias okrągły średnik.
Linia 45. zamknij nawias klamrowy.
Linia 47. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 48. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 49. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 50. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 51. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
Linia 52. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 53. prawy ukośnik asterysk światła bez zmian asterysk prawy ukośnik.
Linia 54. digitalWrite otwórz nawias okrągły autaZielonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 55. digitalWrite otwórz nawias okrągły autaZoltaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 56. digitalWrite otwórz nawias okrągły autaCzerwonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 57. digitalWrite otwórz nawias okrągły ludzieZielonaPin przecinek LOW zamknij nawias okrągły średnik.
Linia 58. digitalWrite otwórz nawias okrągły ludzieCzerwonaPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 59. zamknij nawias klamrowy.
Linia 60. zamknij nawias klamrowy.
/* deklaracja zmiennych */
int autaZielonaPin = 10;
int autaZoltaPin = 9;
int autaCzerwonaPin = 8;
int ludzieZielonaPin = 7;
int ludzieCzerwonaPin = 6;
int przycisk = 2;
int licznik;
void setup() {
/* ustawienie wejść i wyjść */
pinMode(autaZielonaPin, OUTPUT);
pinMode(autaZoltaPin, OUTPUT);
pinMode(autaCzerwonaPin, OUTPUT);
pinMode(ludzieZielonaPin, OUTPUT);
pinMode(ludzieCzerwonaPin, OUTPUT);
pinMode(przycisk, INPUT);
}
void loop() {
/* początkowe stany napięcia na pinach,do których podłączone są diody */
digitalWrite(autaZielonaPin, HIGH);
digitalWrite(autaZoltaPin, LOW);
digitalWrite(autaCzerwonaPin, LOW);
digitalWrite(ludzieZielonaPin, LOW);
digitalWrite(ludzieCzerwonaPin, HIGH);
/* sprawdzenie stanu włącznika */
if (digitalRead(przycisk) == HIGH) {
/* zmiana koloru świateł */
digitalWrite(autaZielonaPin, LOW);
digitalWrite(autaZoltaPin, HIGH);
delay(5000);
digitalWrite(autaZoltaPin, LOW);
digitalWrite(autaCzerwonaPin, HIGH);
digitalWrite(ludzieCzerwonaPin, LOW);
digitalWrite(ludzieZielonaPin, HIGH);
delay(6000);
for (licznik = 0; licznik < 5; licznik = licznik + 1) {
digitalWrite(ludzieZielonaPin, LOW);
delay(250);
digitalWrite(ludzieZielonaPin, HIGH);
delay(250);
}
digitalWrite(ludzieZielonaPin, LOW);
digitalWrite(autaCzerwonaPin, HIGH);
digitalWrite(autaZoltaPin, HIGH);
digitalWrite(ludzieCzerwonaPin, HIGH);
delay(2000);
} else {
/* światła bez zmian */
digitalWrite(autaZielonaPin, HIGH);
digitalWrite(autaZoltaPin, LOW);
digitalWrite(autaCzerwonaPin, LOW);
digitalWrite(ludzieZielonaPin, LOW);
digitalWrite(ludzieCzerwonaPin, HIGH);
}
}
Ryf10yFXwS6gt
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono płytkę stykową z podpiętymi przewodami, rezystorami oraz diodami LED i włącznikiem. Diody ustawione są następująco od lewej diody dla pieszych: czerwona, zielona, odstęp i dalej diody dla pojazdów, czerwona, żółta i zielona. Najpierw równocześnie świecą dioda czerwona dla pieszych oraz zielona dla pojazdów. Następnie osoba klika włącznik, co powoduje zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów.
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono płytkę stykową z podpiętymi przewodami, rezystorami oraz diodami LED i włącznikiem. Diody ustawione są następująco od lewej diody dla pieszych: czerwona, zielona, odstęp i dalej diody dla pojazdów, czerwona, żółta i zielona. Najpierw równocześnie świecą dioda czerwona dla pieszych oraz zielona dla pojazdów. Następnie osoba klika włącznik, co powoduje zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono płytkę stykową z podpiętymi przewodami, rezystorami oraz diodami LED i włącznikiem. Diody ustawione są następująco od lewej diody dla pieszych: czerwona, zielona, odstęp i dalej diody dla pojazdów, czerwona, żółta i zielona. Najpierw równocześnie świecą dioda czerwona dla pieszych oraz zielona dla pojazdów. Następnie osoba klika włącznik, co powoduje zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów.
Tinkercad
Zróbmy symulację sygnalizacji świetlnej za pomocą środowiska Tinkercad.
R10NubTLplyRM
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się puste pole. Po prawo znajduje się pasek z następującymi ikonami: rezystor, dioda led, przycisk, potencjometr, kondensator, przełącznik suwakowy. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
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.
Ri0GscSpkidBv
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej. Po prawo znajduje się pasek z następującymi ikonami: bateria 9 V, bateria pastylkowa 3 V, bateria 1,5 V, mała płytka prototypowa, mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Znajdź i dodaj do naszej płytki stykowej diody LED. Z listy rozwijanej wybierz kolory, odpowiadające kolorom sygnalizacji świetlnej.
R3giFGt2k88EQ
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. Po prawo znajduje się pasek z następującymi ikonami: rezystor, dioda led, przycisk, potencjometr, kondensator, przełącznik suwakowy. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Do płytki stykowej dodaj przycisk Tact switch.
REDMgejfA1gfG
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto również włącznik. Po prawo znajduje się pasek z następującymi ikonami: rezystor, dioda LED, przycisk, potencjometr, kondensator, przełącznik suwakowy. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Do każdej anody diody LED dodaj rezystor i ustaw jego wartość na 220 Ωomega. Dodaj również rezystor o wartości 10 kΩomega do jednej z nóżek przycisku. Drugą jego nóżkę podłącz do ujemnej szyny płytki stykowej.
RpliZC6VBwMXK
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Po prawo znajduje się pasek z następującymi ikonami: rezystor, dioda LED, przycisk, potencjometr, kondensator, przełącznik suwakowy. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Łączymy katody diod z ujemną szyną płytki stykowej.
RhUhqXcCWDme6
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. Po prawo znajduje się pasek z następującymi ikonami: rezystor, dioda LED, przycisk, potencjometr, kondensator, przełącznik suwakowy. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Szukamy na liście moduł Arduino Uno i wstawiamy go do okna symulacji.
R16Cnwl31FWzy
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Po prawo znajduje się pasek z następującymi ikonami: mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Łączymy pin GND Arduino Uno z ujemną szyną płytki.
RWRA92CNGhU4u
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Po prawo znajduje się pasek z następującymi ikonami: mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
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.
R16exZ4mSDjgA
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z następującymi ikonami: mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Przejdźmy teraz do pisania kodu. W tym celu klikamy na przycisk Kod, z listy rozwijanej wybieramy Tekst, potwierdzamy chęć zmiany widoku i czyścimy zawartość.
Przepisz kod symulacji świateł drogowych.
Rnzm0wmEcnTpr
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się otwarte okno zatytułowane „Tekst”, w którym znajduje się kod sterujący działaniem diod.
Jeśli okno do wpisywania kodu zasłania nam widok układu, dostosuj widok okna do swoich potrzeb. Ewentualnie możesz „zasunąć” to okno, klikając przycisk Kod.
RByPvePZRgzpK
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z następującymi ikonami: mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Nad paskiem znajduje się również pole wyszukiwania. Pasek można przewijać.
Zrzut ekranu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED, przy czym dwie z nich świecą. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. Świecące diody to zielona dla pojazdów i czerwona dla pieszych. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z ikonami. Nad paskiem znajduje się również pole wyszukiwania, a nad polem znajduje się menu z następującymi przyciskami od lewej: Kod, Zatrzymaj symulację zaznaczony zielonym tłem, Eksploruj, Udostępnij. Poniżej ikony znajdujące się na pasku : mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Pasek można przewijać.
Wciśnij przycisk znajdujący się na płytce stykowej i sprawdź działanie programu.
Film z działania programu.
R1JM1mxGWnesx
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono zrzut ekranu prezentujący okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z ikonami. Nad paskiem znajduje się również pole wyszukiwania, a nad polem znajduje się menu z następującymi przyciskami od lewej: Kod, Zatrzymaj symulację zaznaczony zielonym tłem, Eksploruj, Udostępnij. Poniżej ikony znajdujące się na pasku : mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Pasek można przewijać. Osoba klika w menu przycisk „Uruchom symulację”. Powoduje to zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów. Następnie osoba klika za pomocą kursora na włącznik wpięty w płytkę stykową i cykl świateł się powtarza.
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono zrzut ekranu prezentujący okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z ikonami. Nad paskiem znajduje się również pole wyszukiwania, a nad polem znajduje się menu z następującymi przyciskami od lewej: Kod, Zatrzymaj symulację zaznaczony zielonym tłem, Eksploruj, Udostępnij. Poniżej ikony znajdujące się na pasku : mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Pasek można przewijać. Osoba klika w menu przycisk „Uruchom symulację”. Powoduje to zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów. Następnie osoba klika za pomocą kursora na włącznik wpięty w płytkę stykową i cykl świateł się powtarza.
Film nawiązujący do treści lekcji dotyczącej świateł drogowych. Na filmie przedstawiono zrzut ekranu prezentujący okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0930 Arduino - światła drogowe". Poniżej znajduje się pole, na którym umieszczono rysunek płytki stykowej, w którą wpięto pięć diod LED. Diody wpięte są w kolumnie „j” i od lewej mamy diody symulujące światła dla pojazdów: czerwoną, żółtą, zieloną, odstęp i dalej diody symulujące światła dla pieszych: czerwoną, zieloną. W środek płytki stykowej wpięto włącznik. Pod diodami wpięto w środek płytki pięć rezystorów oraz jeden rezystor 10 omega w tym samym wierszu, w którym wpięty jest włącznik. Podłączono przewody, którymi połączono ze sobą w poziomie kolejne diody oraz ostatnią diodę z rezystorem 10 omega. W polu po lewo od płytki umieszczono rysunek Arduino Uno R3. Moduł Arduino połączono przewodem od masy GND do wolnych nóżek rezystorów. Połączono również rezystory diod LED z pinami. Połączenia są następujące, zaczynając od lewej strony: diody dla aut: rezystor diody pierwszej (czerwonej) z pinem D8, rezystor diody drugiej (żółtej) z pinem D9, rezystor diody trzeciej (zielonej) z pinem D10. Diody dla przejścia dla pieszych: rezystor diody czwartej (czerwonej) z pinem D6, rezystor diody piątej (zielonej) z pinem D7. Po prawo znajduje się pasek z ikonami. Nad paskiem znajduje się również pole wyszukiwania, a nad polem znajduje się menu z następującymi przyciskami od lewej: Kod, Zatrzymaj symulację zaznaczony zielonym tłem, Eksploruj, Udostępnij. Poniżej ikony znajdujące się na pasku : mikro bit, Arduino Uno R3, silnik wibracyjny, silnik prądu stałego, mikroserwo, hobbystyczny silnik. Pasek można przewijać. Osoba klika w menu przycisk „Uruchom symulację”. Powoduje to zaświecenie diody czerwonej dla pieszych i żółtej dla pojazdów. Po kilku sekundach następuje kolejna zmiana, w wyniku której świeci się dioda zielona dla pieszych oraz czerwona dla pojazdów. Po następnych kilku sekundach dioda zielona dla pieszych zaczyna migać, a po chwili przez około dwie sekundy świecą się diody: czerwona dla pieszych, czerwona i żółta dla pojazdów. Następnie wracamy do punktu wyjścia: świecą się dwie diody: czerwona dla pieszych i zielona dla pojazdów. Następnie osoba klika za pomocą kursora na włącznik wpięty w płytkę stykową i cykl świateł się powtarza.
Słownik
włącznik chwilowy
włącznik chwilowy
włącznik, w którym styki są zwarte wtedy, gdy przycisk jest wciśnięty; nazywany również włącznikiem zwiernym lub normalnie otwartym