Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Przeanalizuj poniższą infografikę, przedstawiającą różnicę w działaniu funkcji delay() oraz millis().

R1662AHy9ruFB
Ilustracja interaktywna 1. Zapal diodę., 2. Poczekaj 100 ms., 3. Zgaś diodę., 4.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Projekt minutnika i stopera – ćwiczenia praktyczne

Co nam będzie potrzebne:

  • przewody połączeniowe męsko‑męskie,

  • Arduino Uno,

  • wyświetlacz LCD 2x16,

  • 5 x przycisk tact‑switch,

  • potencjometr 10 komega,

  • kabel USB typu A‑B do podłączenia do komputera.

Celem wykonania projektu jest zbudowanie prostego układu stopera wyświetlającego aktualnie odliczany czas na dolnej linii wyświetlacza. Górna linia wyświetlacza odpowiedzialna jest za obsługę sekundnika.

Na interfejs użytkownika składają się przyciski:

  • zwiększ sekundnik o 1,

  • zmniejsz sekundnik o 1,

  • start sekundnika,

  • start stopera,

  • reset.

Projekt zakłada wykorzystanie jednocześnie tylko jednego z trybów pracy w danym momencie.

Zaczynamy od złożenia układu zgodnie z poniższym schematem:

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

Budowanie układu na płytce stykowej:

Przygotuj potrzebne elementy.

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

Podłącz kabel USB.

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

W płytce stykowej umieść przyciski.

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

W płytce stykowej umieść wyświetlacz.

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

W płytce stykowej umieść potencjometr.

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

Połącz wyjście przycisku do szyny GND.

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

Analogicznie połącz pozostałe przyciski.

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

Jedną stronę potencjometru podłącz do GND.

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

Podłącz katodę wyświetlacza (pin 16) do GND.

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

Podłącz anodę wyświetlacza (pin 15) do szyny 5V.

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

Podłącz VDD wyświetlacza (pin 2) do szyny 5V.

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

Drugi koniec potencjometru podłącz do szyny 5V.

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

Środkowe wyjście potencjometru połącz z V0 wyświetlacza (pin 3).

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

Podłącz VSS wyświetlacza (pin 1) do szyny GND.

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

Połącz szyny zasilania płytki stykowej z wyjściami Arduino:

  • szyna 5V z 5v Arduino,

  • szyna GND z GND Arduino.

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

Połącz drugą nóżkę przycisków z wyjściami Arduino (od 2 do 6).

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

Połącz pin RS wyświetlacza (pin 4) z pinem 8 Arduino.

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

Połącz pin RW wyświetlacza (pin 5) do szyny GND.

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

Połącz pin E wyświetlacza (pin 6) do pinu 9 Arduino.

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

Połącz linie danych wyświetlacza (piny 11‑14) do pinów 10‑13 Arduino:

  • pin D4 wyświetlacza (pin 11) do 10 pinu Arduino,

  • pin D5 wyświetlacza (pin 12) do 11 pinu Arduino,

  • pin D6 wyświetlacza (pin 13) do 12 pinu Arduino,

  • pin D7 wyświetlacza (pin 14) do 13 pinu Arduino.

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

Sprawdź poprawność połączeń, a następnie włącz zasilanie całości.

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

Wyreguluj kontrast wyświetlacza:

  • obróć potencjometr do momentu pojawienia się wyraźnych prostokątów w górnej linii,

  • następnie obróć potencjometr tak, aby prostokąty stały się minimalnie widoczne.

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

Układ jest gotowy do pracy.

Pisanie programu

Otwieramy i zapisujemy nowy sketch w Arduino IDE.

Na początku załączamy bibliotekę potrzebną do obsługi wyświetlacza.

Linia 1. kratka include otwórz nawias ostrokątny LiquidCrystal kropka h zamknij nawias ostrokątny.

Wykonujemy inicjalizację wyświetlacza LCD.

Linia 1. LiquidCrystal lcd otwórz nawias okrągły 8 przecinek 9 przecinek 10 przecinek 11 przecinek 12 przecinek 13 zamknij nawias okrągły średnik.

Wprowadzamy definicje domyślnej wartości sekundnika.

Linia 1. kratka define sekundnikDefault 10 prawy ukośnik prawy ukośnik domyślna wartośc sekundnika to 10s.

Przeprowadzamy inicjalizację zmiennych.

Linia 1. unsigned long stoperStart średnik prawy ukośnik prawy ukośnik czas startu stopera. Linia 2. unsigned long sekundnikStart średnik prawy ukośnik prawy ukośnik czas startu sekundnika. Linia 3. unsigned long sekundnik znak równości sekundnikDefault średnik prawy ukośnik prawy ukośnik wartość sekundnika w której przechowujemy odliczany czas. Linia 4. int tryb średnik prawy ukośnik prawy ukośnik zmienna pomocnicza do określania trybu pracy.

W funkcji setup() programu:

– kończymy inicjalizację wyświetlacza LCD:

Linia 1. lcd kropka begin otwórz nawias okrągły 16 przecinek 2 zamknij nawias okrągły średnik.

– definiujemy piny wejściowe jako piny do obsługi przycisków – tryb pracy wejścia z podciągnięciem do napięcia 5V – co oznacza, że przy wciśnięciu przycisku jest stan 0:

Linia 1. pinMode otwórz nawias okrągły 2 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 2. pinMode otwórz nawias okrągły 3 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 3. pinMode otwórz nawias okrągły 4 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 4. pinMode otwórz nawias okrągły 5 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 5. pinMode otwórz nawias okrągły 6 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.

W pętli głównej rozpisujemy algorytm naszego programu:

Sprawdzamy, czy któryś z przycisków został wciśnięty, i wykonujemy akcję zgodnie z przeznaczeniem przycisku:

(zwróć uwagę na zabezpieczenie z wykorzystaniem zmiennej tryb – jeśli działa stoper bądź minutnik, można skorzystać tylko z przycisku reset)

Linia 1. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 2 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. sekundnik plus znak równości 1 średnik prawy ukośnik prawy ukośnik zwiększenie czasu sekundnika o 1. Linia 3. delay otwórz nawias okrągły 100 zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 3 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 5. sekundnik minus znak równości 1 średnik prawy ukośnik prawy ukośnik zmniejszenie czasu sekundnika o 1. Linia 6. delay otwórz nawias okrągły 100 zamknij nawias okrągły średnik. Linia 7. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 4 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. tryb znak równości 1 średnik prawy ukośnik prawy ukośnik minutnik start. Linia 9. sekundnikStart znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 10. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 5 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 11. tryb znak równości 2 średnik prawy ukośnik prawy ukośnik stoper start. Linia 12. stoperStart znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 13. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 6 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik reset. Linia 14. tryb znak równości 0 średnik. Linia 15. sekundnik znak równości sekundnikDefault średnik. Linia 16. zamknij nawias klamrowy.

Sprawdzamy który z trybów pracy został wybrany i na jego podstawie wykonujemy zadaną akcję:

Linia 1. if otwórz nawias okrągły tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik wyświetl menu główne. Linia 2. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 3. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 4. lcd kropka print otwórz nawias okrągły cudzysłów Sekundnik dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 5. lcd kropka print otwórz nawias okrągły sekundnik zamknij nawias okrągły średnik. Linia 6. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 7. lcd kropka print otwórz nawias okrągły cudzysłów Stoper dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 8. zamknij nawias klamrowy else if otwórz nawias okrągły tryb znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik tryb sekundnika. Linia 9. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 10. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 11. lcd kropka print otwórz nawias okrągły cudzysłów Sekundnik dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 12. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 13. lcd kropka print otwórz nawias okrągły otwórz nawias okrągły sekundnik asterysk 1000 minus otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus sekundnikStart zamknij nawias okrągły zamknij nawias okrągły prawy ukośnik 1000 zamknij nawias okrągły średnik. Linia 14. if otwórz nawias okrągły otwórz nawias okrągły sekundnik asterysk 1000 minus otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus sekundnikStart zamknij nawias okrągły zamknij nawias okrągły otwórz nawias ostrokątny 250 zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. tryb znak równości 0 średnik. Linia 16. sekundnik znak równości sekundnikDefault średnik. Linia 17. zamknij nawias klamrowy. Linia 18. zamknij nawias klamrowy else if otwórz nawias okrągły tryb znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik tryb stopera. Linia 19. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 20. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 21. lcd kropka print otwórz nawias okrągły cudzysłów Stoper dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 22. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 23. lcd kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus stoperStart zamknij nawias okrągły prawy ukośnik 1000 zamknij nawias okrągły średnik. Linia 24. zamknij nawias klamrowy.

Dodajemy opóźnienie po wykonaniu pętli (tak, aby po wciśnięciu przycisku był czas na jego puszczenie) oraz tekst na wyświetlaczu b:

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

Gotowy program wygląda następująco:

Linia 1. kratka include otwórz nawias ostrokątny LiquidCrystal kropka h zamknij nawias ostrokątny. Linia 2. LiquidCrystal lcd otwórz nawias okrągły 8 przecinek 9 przecinek 10 przecinek 11 przecinek 12 przecinek 13 zamknij nawias okrągły średnik. Linia 3. kratka define sekundnikDefault 10 prawy ukośnik prawy ukośnik domyślna wartośc sekundnika to 10s. Linia 4. unsigned long stoperStart średnik prawy ukośnik prawy ukośnik czas startu stopera. Linia 5. unsigned long sekundnikStart średnik prawy ukośnik prawy ukośnik czas startu sekundnika. Linia 6. unsigned long sekundnik znak równości sekundnikDefault średnik prawy ukośnik prawy ukośnik wartość sekundnika w której przechowujemy odliczany czas. Linia 7. int tryb średnik prawy ukośnik prawy ukośnik zmienna pomocnicza do określania trybu pracy. Linia 9. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. lcd kropka begin otwórz nawias okrągły 16 przecinek 2 zamknij nawias okrągły średnik. Linia 11. pinMode otwórz nawias okrągły 2 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 12. pinMode otwórz nawias okrągły 3 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 13. pinMode otwórz nawias okrągły 4 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 14. pinMode otwórz nawias okrągły 5 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 15. pinMode otwórz nawias okrągły 6 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik. Linia 16. zamknij nawias klamrowy. Linia 17. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 2 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 19. sekundnik plus znak równości 1 średnik prawy ukośnik prawy ukośnik zwiększenie czasu sekundnika o 1. Linia 20. delay otwórz nawias okrągły 100 zamknij nawias okrągły średnik. Linia 21. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 3 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 22. sekundnik minus znak równości 1 średnik prawy ukośnik prawy ukośnik zmniejszenie czasu sekundnika o 1. Linia 23. delay otwórz nawias okrągły 100 zamknij nawias okrągły średnik. Linia 24. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 4 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 25. tryb znak równości 1 średnik prawy ukośnik prawy ukośnik minutnik start. Linia 26. sekundnikStart znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 27. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 5 zamknij nawias okrągły ampersant ampersant tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 28. tryb znak równości 2 średnik prawy ukośnik prawy ukośnik stoper start. Linia 29. stoperStart znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 30. zamknij nawias klamrowy else if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 6 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik reset. Linia 31. tryb znak równości 0 średnik. Linia 32. sekundnik znak równości sekundnikDefault średnik. Linia 33. zamknij nawias klamrowy. Linia 35. if otwórz nawias okrągły tryb znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik wyświetl menu główne. Linia 36. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 37. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 38. lcd kropka print otwórz nawias okrągły cudzysłów Sekundnik dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 39. lcd kropka print otwórz nawias okrągły sekundnik zamknij nawias okrągły średnik. Linia 40. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 41. lcd kropka print otwórz nawias okrągły cudzysłów Stoper dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 42. zamknij nawias klamrowy else if otwórz nawias okrągły tryb znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik tryb sekundnika. Linia 43. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 44. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 45. lcd kropka print otwórz nawias okrągły cudzysłów Sekundnik dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 46. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 47. lcd kropka print otwórz nawias okrągły otwórz nawias okrągły sekundnik asterysk 1000 minus otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus sekundnikStart zamknij nawias okrągły zamknij nawias okrągły prawy ukośnik 1000 zamknij nawias okrągły średnik. Linia 48. if otwórz nawias okrągły otwórz nawias okrągły sekundnik asterysk 1000 minus otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus sekundnikStart zamknij nawias okrągły zamknij nawias okrągły otwórz nawias ostrokątny 250 zamknij nawias okrągły otwórz nawias klamrowy. Linia 49. tryb znak równości 0 średnik. Linia 50. sekundnik znak równości sekundnikDefault średnik. Linia 51. zamknij nawias klamrowy. Linia 52. zamknij nawias klamrowy else if otwórz nawias okrągły tryb znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik tryb stopera. Linia 53. lcd kropka clear otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 54. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 55. lcd kropka print otwórz nawias okrągły cudzysłów Stoper dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 56. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 1 zamknij nawias okrągły średnik. Linia 57. lcd kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus stoperStart zamknij nawias okrągły prawy ukośnik 1000 zamknij nawias okrągły średnik. Linia 58. zamknij nawias klamrowy. Linia 59. delay otwórz nawias okrągły 200 zamknij nawias okrągły średnik. Linia 60. zamknij nawias klamrowy.

Wgrywamy program i sprawdzamy jego działanie.

Uruchom poniższy film, by zobaczyć prezentację działania programu:

R1KnEjvff3LUl
Film przedstawia kabel USB podłączony do modułu Arduino oraz płytkę stykową, w którą wpięto pięć przycisków, potencjometr i wyświetlacz. Płytkę i moduł Aruduino połączono ze sobą w odpowiedni sposób za pomocą przewodów. Film przedstawia działanie programu. Na początku na wyświetlaczu pojawia się napis "Sekundnik: 10, Stoper: ". Osoba za pomocą śrubokręta wciska kilkukrotnie pierwszy od lewej przycisk, zwiększając liczbę na wyświetlaczu z dziesięciu na 14. Następnie osoba wciska kilkukrotnie drugi przycisk od lewej, zmniejszając liczbę na wyświetlaczu do dwunastu. W kolejnym kroku osoba wciska raz trzeci od lewej przycisk, po czym na wyświetlaczu zmienia się napis na "Sekundnik: 12" i z każdą kolejną sekundą program odlicza jedną sekundę: 11, 10, 9 i tak dalej do zera. Po zakończeniu odliczana pojawia się na wyświetlaczu bazowy komunikat: "Sekundnik: 10, Stoper: ". Następnie osoba włącza przycisk czwarty od lewej, w wyniku czego na wyświetlaczu pojawia się napis "Stoper: 0" i dalej następuje odliczanie w górę, to znaczy: 1, 2, 3, i tak dalej do piętnastu, po czym na wyświetlaczu pojawia się znowu komunikat bazowy. Osoba wciska przycisk czwarty ponownie i na wyświetlaczu ponownie pojawia się komunikat „Stoper: 0” i progra odlicza sekundy w górę. Po kilku sekundach osoba wciska piąty od lewej przycisk, wracając do głównego komunikatu na wyświetlaczu, po czym wciska przycisk środkowy. Wyświetla się wtedy komunikat „Sekundnik: 9”. Po odliczeniu dwóch sekund w dół, osoba wciska przycisk piąty, wracając do głównego komunikatu.

Zróbmy symulację układu stopera oraz sekundnika, za pomocą środowiska Tinkercad.

Z listy Komponenty wybierz Wszystko.

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

Znajdź dużą płytkę stykową i dodaj ją do okna symulacji.

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

Dodaj wyświetlacz LCD 2x16.

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

Dodaj teraz potencjometr i ustaw jego wartość na 10 komega.

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

Teraz dodaj pięć przycisków.

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

Do okna symulacji dodaj moduł Arduino Uno.

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

Do dodatniej szyny płytki podłącz: pin 5V Arduino, pin nr 2 (VCC) wyświetlacza, pierwszą nóżkę potencjometru oraz anodę diody wyświetlacza.

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

Do ujemnej szyny płytki podepnij: pin GND Arduino, po jednym pinie przycisków, pin nr 1 (GND) wyświetlacza, pin nr 5 (RW) wyświetlacza, katodę diody wyświetlacza oraz trzecią nóżkę potencjometru.

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

Wolny pin pierwszego przycisku podpinamy pod pin D2 Arduino.

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

Wolny pin drugiego przycisku podpinamy pod pin D3 Arduino.

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

Wolny pin trzeciego przycisku podpinamy pod pin D4 Arduino.

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

Wolny pin czwartego przycisku podpinamy pod pin D5 Arduino.

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

Wolny pin piątego przycisku podpinamy pod pin D6 Arduino.

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

Pin nr 3 (V0) podpinamy pod środkową nóżkę potencjometru.

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

Pin nr 4 (RS) podpinamy pod pin D8 Arduino.

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

Pin nr 6 (E) podpinamy pod pin D9 Arduino.

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

Pin nr 11 (DB4) podpinamy pod pin D10 Arduino.

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

Pin nr 12 (DB5) podpinamy pod pin D11 Arduino.

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

Pin nr 13 (DB6) podpinamy pod pin D12 Arduino.

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

Pin nr 14 (DB7) podpinamy pod pin D13 Arduino.

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

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, dopasuj widok okna i uruchom symulację.

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

Podczas uruchomienia symulacji okazało się, że uszkodziliśmy diodę wyświetlacza.

Zmodyfikujmy nasze połączenie i dołóżmy rezystor o wartości 220 omega. Jedną nóżkę rezystora podepnij pod anodę diody, drugą nóżkę podepnij pod dodatnią szynę płytki.

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

Jeśli po uruchomieniu symulacji na wyświetlaczu nic się nie pojawia, musisz ustawić kontrast potencjometrem.

Film z działania programu.

RknN7dmO1Xt57
Film z działania programu przedstawia okno przeglądarki z otwartą stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy „0936 Arduino – prezentacja multimedialna”. Poniżej znajduje się pasek narzędzi. Od lewej: Obrót w prawo, kosz, cofanie, do przodu, komentarz, po prawo na pasku znajdują się następujące przyciski: wciśnięty Kod, wciśnięty Uruchom symulację, Eksportuj, Udostępnij. Poniżej główną część okna zajmuje pole, na którym umieszczono płytkę stykową, w którą wpięto wyświetlacz LCD, potencjometr oraz pięć przycisków. Wszystkie elementy połączono w odpowiedni sposób przewodami. Po prawo znajduje się pole z częścią kodu. Po uruchomieniu programu wskazówka potencjometru obraca się w prawo. Na wyświetlaczu pojawia się napis: „Sekundnik: 10, Stoper: ". Po wciśnięciu przycisku pierwszego od lewej, program zaczyna odliczać w górę. Sekundnik wskazuje 10, 11, 12, 13, 14. Program zatrzymuje się. Następnie osoba klika na drugi od lewej przycisk. Program zaczyna odliczanie w dół, czyli Sekundnik pokazuje coraz mniejszą liczbę, a napis "Stoper" na wyświetlaczu znika. Odliczanie przebiega od liczby 14 do zera. Po odliczaniu, wyświetlacz wraca automatycznie do pierwotnego komunikatu, czyli „Sekundnik: 10, Stoper: ". Następnie osoba klika na czwarty od lewej przycisk, w efekcie czego na wyświetlaczu pojawia się napis: "Stoper: 0", po czym następuje odliczanie w górę, od zera do siedemnastu. Następnie osoba klika na piąty przycisk i na wyświetlaczu pojawia się pierwotny komunikat. Następnie sekundnik odlicza od dziesięciu do dwudziestu w przyspieszonym tempie. W kolejnym kroku osoba klika na trzeci przycisk, po czym na wyświetlacz pojawia się napis "Sekundnik: 20" i zaczyna się odliczanie w dół. Po odliczeniu do czternastej sekundy, osoba klika piąty przycisk i na wyświetlaczu pojawia się pierwotny komunikat.
Ciekawostka

W przygotowanych ćwiczeniach posługujesz się metodami odmierzania czasu. Metody te dobrze sprawdzają się przy odliczaniu czasu o niedużej dokładności. Budując zegar, należy posłużyć się lepszym źródłem czasu, takim jak RTC (Real Time Clock) – czyli zegar czasu rzeczywistego. Układ tego typu pozwala zachować precyzję odmierzania czasu, a co za tym idzie nasz zegar po kilku dniach będzie nadal wskazywał poprawną godzinę.