R1K3N48sEhQAF
Zdjęcie przedstawia płytkę stykową, na której podłączone są różne kable i komponenty takie jak silnik serwo, arduino uno czy panel przycisków.

I_R_W15_M03 Przykładowe projekty

Naszym zadaniem będzie zbudowanie zamka szyfrowego. W projekcie użyjemy szesnastu przycisków (tactswitch) oraz trójkolorowej diody RGB ze wspólną katodą.

Podpięcie szesnastu przycisków do Arduino Uno może być nieco utrudnione przez brak wystarczającej liczby wejść. W naszym projekcie zastosujemy tzw. klawiaturę matrycową.

Klawiatura matrycowa

Zazwyczaj każdy przycisk podłączony do Arduino zajmuje jedno wejście. Przy kilku przyciskach nie jest to problem, ale co w sytuacji, gdy tych przycisków mamy aż 16? Przykładowo, w celu wpisania zwykłego kodu pin musimy mieć do dyspozycji aż 10 przycisków dla samych tylko cyfr od 0 do 9, a przecież potrzebne są jeszcze przyciski do resetowania hasła i jego zatwierdzania. Podłączanie każdego z przycisków byłoby z pewnością dość kłopotliwe, a niekiedy wręcz niemożliwe.

Rozwiązaniem w takich sytuacjach jest klawiatura matrycowa, dzięki której możliwe jest zmniejszenie liczby potrzebnych wejść. W tego typu klawiaturze przyciski połączone są w kolumny oraz wiersze, tworząc matrycę połączeń.

Najczęściej spotykamy dwa rodzaje klawiatur membranowych: 4×3 oraz 4×4.

Klawiatura 4×3 ma 12 przycisków ułożonych w czterech wierszach i trzech kolumnach. Znajdują się na niej cyfry od 0 do 9 oraz znaki * i #. Do podłączenia wykorzystuje 7 przewodów: cztery dla wierszy i trzy dla kolumn.

RK27GDJME1A7P
Budowa klawiatury 4x3
Źródło: Contentplus.pl Sp. z o.o.,, licencja: CC BY 3.0.

Klawiatura 4×4 ma 16 przycisków ułożonych w czterech wierszach i czterech kolumnach. Oprócz cyfr oraz znaków * i # posiada także przyciski A, B, C i D. Wymaga 8 przewodów: czterech dla wierszy i czterech dla kolumn.

RST24OD3Q6DH5
Budowa klawiatury 4x4
Źródło: Contentplus.pl Sp. z o.o.,, licencja: CC BY 3.0.

Obie klawiatury działają w podobny sposób. Arduino sprawdza kolejne wiersze i kolumny, aby rozpoznać, który przycisk został naciśnięty.

Jak widać na powyższych schematach, matryca 4x3 umożliwia podłączenie 12 przycisków za pomocą siedmiu linii danych, a dzięki matrycy 4x4 podłączymy 16 przycisków za pomocą ośmiu linii danych.

Budowa układu z klawiaturą matrycową

Co będzie nam potrzebne:

Na potrzeby naszego zadania użyjemy prostszej wersji klawiatury matrycowej – wygląda ona tak, jak na poniższym zdjęciu.

R33UJ5XERVP71
Przykład klawiatury 4x4
Źródło: Contentplus.pl Sp. z o.o.,, licencja: CC BY 3.0.

Do pracy z Arduino Uno będziemy potrzebowali biblioteki, która ułatwi nam pracę nad zamkiem szyfrowym.

Polecenie 1

Pobierz bibliotekę. Pamiętaj o sprawdzeniu, czy jest to najaktualniejsza wersja.

RTl15Md4JHRL1

Biblioteka Keypad, v. 3.0 2012-07-12
Plik ZIP o rozmiarze 30.93 KB w języku polskim

Po pobraniu biblioteki musimy zainstalować ją w Arduino IDE. Aby to zrobić, uruchamiamy program, klikamy w zakładkę Szkic, najeżdżamy kursorem na Dołącz bibliotekę i z rozwijanej listy wybieramy Dodaj bibliotekę .ZIP...

Następnie w oknie dialogowym szukamy naszego pliku z biblioteką, zaznaczamy go i klikamy przycisk Open.

Po poprawnym zainstalowaniu biblioteki na pasku informacji wyświetli się napis o powodzeniu instalacji nowej biblioteki.

Sprawdzamy, czy nasza biblioteka znajduje się na liście. Klikamy Szkic, najeżdżamy kursorem na Dołącz bibliotekę i szukamy na liście naszej biblioteki Keypad.

REJ2N8ABCX41D
Widok środowiska Arduino IDE z poprawnie zainstalowaną biblioteką
Źródło: Contentplus.pl Sp. z o.o, licencja: CC BY 3.0.

Zanim przejdziemy do budowy naszego zamka szyfrowego, napiszemy program testowy, który będzie sprawdzał, czy i jaki przycisk został wciśnięty. W tym celu posłużymy się monitorem portu szeregowego. Na początku podłączmy naszą klawiaturę do Arduino Uno, korzystając z pinów od 2 do 9. Pamiętajmy o kolejności podpięcia pinów – na tym etapie jest to bardzo ważne.

RM7KGSQ823M3X
Układ pinów
Źródło: Contentplus.pl Sp. z o.o, licencja: CC BY 3.0.

Klawiaturę z Arduino Uno łączymy za pomocą przewodów męsko‑żeńskich.

Kiedy wszystkie przewody zostaną prawidłowo podpięte, przechodzimy do programowania. Zaczynamy od dodania biblioteki.

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

Następnie podajemy informację, z ilu wierszy i kolumn zbudowana jest nasza klawiatura.

Linia 1. const byte ROWS znak równości 4 średnik. Linia 2. const byte COLS znak równości 4 średnik.

Teraz przypisujemy poszczególne piny Arduino Uno do wierszy i kolumn.

Linia 1. byte rowPins otwórz nawias kwadratowy ROWS zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 5 przecinek 4 przecinek 3 przecinek 2 zamknij nawias klamrowy średnik. Linia 2. byte colPins otwórz nawias kwadratowy COLS zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 6 przecinek 7 przecinek 8 przecinek 9 zamknij nawias klamrowy średnik.

W tym momencie przechodzimy do stworzenia mapy naszej klawiatury za pomocą tablicy dwuwymiarowej:

Linia 1. char keys otwórz nawias kwadratowy ROWS zamknij nawias kwadratowy otwórz nawias kwadratowy COLS zamknij nawias kwadratowy znak równości otwórz nawias klamrowy. Linia 2. otwórz nawias klamrowy apostrof 1 apostrof przecinek apostrof 2 apostrof przecinek apostrof 3 apostrof przecinek apostrof A apostrof zamknij nawias klamrowy przecinek. Linia 3. otwórz nawias klamrowy apostrof 4 apostrof przecinek apostrof 5 apostrof przecinek apostrof 6 apostrof przecinek apostrof B apostrof zamknij nawias klamrowy przecinek. Linia 4. otwórz nawias klamrowy apostrof 7 apostrof przecinek apostrof 8 apostrof przecinek apostrof 9 apostrof przecinek apostrof C apostrof zamknij nawias klamrowy przecinek. Linia 5. otwórz nawias klamrowy apostrof asterysk apostrof przecinek apostrof 0 apostrof przecinek apostrof kratka apostrof przecinek apostrof D apostrof zamknij nawias klamrowy. Linia 6. zamknij nawias klamrowy średnik.

Ostatnim krokiem konfiguracji jest utworzenie nowego obiektu Keypad – nazwijmy go MatrycaPrzyciskow.

W pętli setup() uruchamiamy monitor portu szeregowego.

Linia 1. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik.

Natomiast w pętli loop() tworzymy zmienną typu char odpowiadającą za przechowywanie znaków i przypisujemy jej wartość odczytaną z klawiatury. W tym celu musimy wywołać polecenie MatrycaPrzyciskow.getKey(), a otrzymany w ten sposób znak wysyłamy za pomocą UART do komputera.

Linia 1. char przycisk znak równości MatrycaPrzyciskow kropka getKey otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 3. if otwórz nawias okrągły przycisk zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Serial kropka println otwórz nawias okrągły przycisk zamknij nawias okrągły średnik. Linia 5. zamknij nawias klamrowy.

Połączmy teraz Arduino z komputerem, wgrajmy nasz program i sprawdźmy w monitorze portu szeregowego, czy prawidłowo podpięliśmy i przypisaliśmy wartości odpowiednim przyciskom. Po wciśnięciu wybranego klawisza powinna wyświetlić się odpowiednia wartość – ta, którą przypisaliśmy mu w naszej tablicy.

R17E49HN2V6HB
Działanie programu
Źródło: Contentplus.pl Sp. z o.o, licencja: CC BY 3.0.

Jeśli znaki różnią się od tych zdeklarowanych w tablicy, należy sprawdzić podłączenie klawiatury.