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ń.
Budowa klawiatury 4x3
RT1c0sm4mQfhQ
Ilustracja przedstawia panel przycisków 4 rzędy na 3 kolumny oznaczonych cyframi i znakami * oraz #. Następnie kolejny fragment ukazuje kolejność połączeń rzędów i kolumn. Rzędy połączone są do kabli oznaczonych jako "P1", "P2", "P3" oraz "P4", każdy rząd połączony jest do osobnego kabla. Kolumny połączone są do kolejnych 3 kabli, „P5”, „P6” oraz „P7”, każda kolumna połączona jest do osobnego kabla.
Budowa klawiatury 4x4
Rclc5nTD6Ryv8
Ilustracja przedstawia panel klawiatury 4 rzędy na 4 kolumny. Każda kolumna jak i rząd podłączone są do osobnych kabli. Rzędy podłączone są do kabli oznaczonych P1, P2, P3 i P4. Kolumny oznaczone są poprzez P5, P6, P7 oraz P8. Oprócz cyfr od 0 do 9 dodatkowo widoczne są litery a, b, c, d po prawej stronie panelu jak i symbole * i #.
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.
My zajmiemy się tym drugim wariantem, czyli matrycą 4x4, którą wykorzystamy do budowy naszego zamka kodowego. Wciskając na klawiaturze dowolny przycisk, zwieramy jedną kolumnę i jeden wiersz. Przykładowo, kiedy wciskamy klawisz 0, zwieramy kolumnę P6 z wierszem P4. Jeśli z kolei chcemy ustalić, który przycisk został wciśnięty, wystarczy sprawdzić połączenia między wierszami P1‑P4 a kolumnami P5‑P8.
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...
RJw6DAijcyF7q
Zdjęcie ekranu przedstawia arduino IDE w którym widoczny jest pusty kod jak i otwarte okna dialogowe, pierwsze pojawiające się po kliknięciu "Szkic" ma zaznaczoną opcję "Dołącz bibilotekę", następnie po kliknięciu tej opcji pojawia się okno z zaznaczoną opcją "Dodaj bibiliotekę ZIP".
Następnie w oknie dialogowym szukamy naszego pliku z biblioteką, zaznaczamy go i klikamy przycisk Open.
Rk8ySBFE7O3Pv
Zdjęcie ekranu przedstawia arduino IDE, otwarte jest okno "Wybierz plik zip lub folder zawierający bibliotekę, którą chciałbyś dodać". Zaznaczony wewnątrz jest plik o nazwie "Keypad".
Po poprawnym zainstalowaniu biblioteki na pasku informacji wyświetli się napis o powodzeniu instalacji nowej biblioteki.
RMe8Nni6kKGC4
Zdjęcie ekranu przedstawia otwarte okno arduino IDE, w którym znajdują się dwie puste funkcje zwracające void: setup oraz loop.
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.
R1CQVRK5R78Yr
Zdjęcie ekranu arduino IDE z zaznaczonym przyciskiem "Szkic", z którego rozwija się okno dialogowe, następnie oznaczona jest opcja "Dołącz bibliotekę", z której oznaczona jest opcja Keypad.
Zanim przejdziemy do budowy naszego zamka, 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 szeregowegomonitor portu szeregowegomonitorem 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.
R28YomGugtMEs
Ilustracja przedstawia płytkę z przyciskami i pinami. Przyciski ułożone w siatce 4 na 4, piny zaś po lewej stronie z numeracją rozpoczynającą się na 9 a kończącą się na 2, jest zatem 8 pinów. Siatka przycisków ma następujące oznaczenia, czytane od góry rząd 1: 1, 2, 3, A. Rząd 2: 4, 5, 6, B. Rząd 3: 7, 8, 9, C. Rząd 4: *, 0, #, D.
Klawiaturę z Arduino Uno łączymy za pomocą przewodów męsko‑żeńskich.
R1R5GErwa2jNX
Zdjęcie przedstawia arduino uno połączone kablami do płytki z przyciskami.
Kiedy wszystkie przewody zostały 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.
#include <Keypad.h>
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.
const byte ROWS = 4;
const byte COLS = 4;
Teraz przypisujemy poszczególne piny Arduino Uno do wierszy i kolumn.
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.
Serial.begin (9600);
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.
char przycisk = MatrycaPrzyciskow.getKey();
if (przycisk){
Serial.println(przycisk);
}
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.
RX7r0aq7b7ktc
Zdjęcie ekranu przedstawia okno arduino IDE wraz z otwartym na wierzchu oknem COM6, wydrukowane do tego okna konsoli jest kolejno każdy symbol bądż liczba z klawiatury. Są to: 1, 2, 3, A, 4, 5, 6, B, 7, 8, 9, C, *, 0, #, D.
Jeśli znaki różnią się od tych zdeklarowanych w tablicy, należy sprawdzić podłączenie klawiatury.
Tinkercad
Zróbmy symulację odczytu znaków z klawiatury membranowej, za pomocą środowiska Tinkercad.
R1BwtCqwaSCp5
Na zrzucie ekranu widoczne jest środowisko Tinkercad.
Z listy rozwijanej Komponenty wybierz Wszystko.
RBzepuBPmQtEV
Na zrzucie ekranu widoczne jest środowisko Tinkercad. Z listy komponentów została zaznaczona opcja: Wszystko.
Dodaj moduł Arduino Uno do okna symulacji.
R1e6UyAhbiJJS
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO.
Znajdź i dodaj klawiaturę membranową.
RnWQcOVhuWEQD
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO oraz klawiatura membranowa.
Podpinamy klawiaturę z Arduino Uno:
pin nr 1 (wiersz 1) z pinem D5 Arduino,
pin nr 2 (wiersz 2) z pinem D4 Arduino,
pin nr 3 (wiersz 3) z pinem D3 Arduino,
pin nr 4 (wiersz 4) z pinem D2 Arduino,
pin nr 5 (kolumna 1) z pinem D6 Arduino,
pin nr 6 (kolumna 2) z pinem D7 Arduino,
pin nr 7 (kolumna 3) z pinem D8 Arduino,
pin nr 8 (kolumna 4) z pinem D9 Arduino.
RCsvtGOkesSoe
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową.
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, kliknij na belkę z napisem Konsola szeregowa i uruchom symulację.
Film z działania programu.
R1NAfsZBdLkSm
Film przedstawiający działanie symulacji w programie Tinkercad.
Film przedstawiający działanie symulacji w programie Tinkercad.
Film przedstawiający działanie symulacji w programie Tinkercad.
Zostańmy jeszcze w kodzie testowym i dołączmy do naszego układu trójkolorową diodę RGB ze wspólną katodą.
R1CIPC7r5TOJJ
Zdjęcie przedstawia arduino uno połączone kablami do płytki stykowej, na której znajdują się 3 rezystory podłączone do kolejnych nóżek 4 pinowej diody, ostatnia nóżka podłączona jest kablem do arduino. W tle widoczna jest płytka z przyciskami, która podłączona jest do arduino osobnym zestawem kabli.
Zmieńmy kod tak, by po wciśnięciu na przykład klawisza 1 zapaliła się dioda czerwona, po wciśnięciu 5 – dioda zielona, a po wciśnięciu D – niebieska. Wszystkie diody niech świecą się przez dwie sekundy.
Ćwiczenie 1
Zbuduj układ na podstawie przedstawionego poniżej schematu.
RhsmTC8JbnHOb
Ilustracja przedstawia schemat arduino uno shield, które posiada wiele pinów, obok niego widoczna jest dioda RGB oraz 3 rezystory podłączone do 3 kolejnych anod: 1 kilo-om, 220 om oraz 1 kilo-om, dioda podłączona jest katodą do uziemienia. Schemat rozmieszczenia pinów w arduino uno shield są one pogrupowane ze względu na rolę, tutaj przedstawiony względem wskazówek zegara od lewego dolnego boku układu: Power 3 piny GND, 3,3V 5V oraz Vin; następną grupą jest Analogue tutaj numerowane od góry do dołu od 5 do 0, ostatnim pinem jest aref; następną grupą jest I2C, w której skład wchodzą SCL oraz SDA; następną grupą jest Serial tutaj piny D0_RXT oraz D1_TX0; następną grupą jest GPIO od góry do dołu D2_INT0, D3_INT1, D4, D5, D6, D7, D8, D9, D10_CS, D11, D12, D13; następną grupą jest SPI pinami od góry do dołu są SPI_MISO, SPI_MOSI, SPI_SCK, SPI_5V, SPI_GND, SPI_RESET; ostatnią grupą jest Misc w której skład wchodzą RESET oraz IOREF.
Schemat ideowyschemat ideowy układuSchemat ideowy prezentuje, jak podpięte są dodatkowe elementy naszego układu.
Klawiatura matrycowa podpięta jest pod piny od D2 do D9, a dioda RGB – pod piny D10, D11 i D12. Z kolei rezystor o wartości 220 Ωomega podpięty jest do diody zielonej, natomiast rezystory o wartości 1 kΩomega – do kolorów czerwonego i niebieskiego.
W naszym kodzie wystarczy dopisać zmienną if(), która w zależności od wciśniętego klawisza zapali diodę w danym kolorze.
Linia 1. if otwórz nawias okrągły przycisk znak równości znak równości apostrof 1 apostrof zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. digitalWrite otwórz nawias okrągły 12 przecinek HIGH zamknij nawias okrągły średnik.
Linia 3. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły 12 przecinek LOW zamknij nawias okrągły średnik.
Linia 5. zamknij nawias klamrowy else if otwórz nawias okrągły przycisk znak równości znak równości apostrof 5 apostrof zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. digitalWrite otwórz nawias okrągły 11 przecinek HIGH zamknij nawias okrągły średnik.
Linia 7. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
Linia 8. digitalWrite otwórz nawias okrągły 11 przecinek LOW zamknij nawias okrągły średnik.
Linia 9. zamknij nawias klamrowy else if otwórz nawias okrągły przycisk znak równości znak równości apostrof D apostrof zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. digitalWrite otwórz nawias okrągły 10 przecinek HIGH zamknij nawias okrągły średnik.
Linia 11. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
Linia 12. digitalWrite otwórz nawias okrągły 10 przecinek LOW zamknij nawias okrągły średnik.
Linia 13. zamknij nawias klamrowy.
Zdjęcie przedstawia arduino uno połączone kablami do płytki stykowej, na której znajdują się 3 rezystory podłączone do kolejnych nóżek 4 pinowej diody, ostatnia nóżka podłączona jest kablem do arduino. W tle widoczna jest płytka z przyciskami, która podłączona jest do arduino osobnym zestawem kabli. LED świeci się na czerwono.
R1LLeKVtv9rXS
Zdjęcie przedstawia arduino uno połączone kablami do płytki stykowej, na której znajdują się 3 rezystory podłączone do kolejnych nóżek 4 pinowej diody, ostatnia nóżka podłączona jest kablem do arduino. W tle widoczna jest płytka z przyciskami, która podłączona jest do arduino osobnym zestawem kabli. LED świeci się na zielono.
R1SF2DvsUMyPr
Zdjęcie przedstawia arduino uno połączone kablami do płytki stykowej, na której znajdują się 3 rezystory podłączone do kolejnych nóżek 4 pinowej diody, ostatnia nóżka podłączona jest kablem do arduino. W tle widoczna jest płytka z przyciskami, która podłączona jest do arduino osobnym zestawem kabli. LED świeci się na niebiesko.
Nie zmieniaj połączenia klawiatury z Arduino Uno. Dodaj do okna symulacji płytkę.
Rm3oYQNinIfnX
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową oraz płytka stykowa.
Do płytki dodaj diodę RGB.
R587g25cj3yoe
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową oraz płytka stykowa z diodą LED RGB.
Do każdej anody diody dodaj rezystor o wartości 1 kΩomega.
R7YL9wmrQy8gV
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową oraz płytka stykowa z diodą LED RGB z rezystorami 1 kΩ. połączonych z każdą anodą diody.
Katodę diody LED podepnij z pinem GND Arduino.
Rexiva2LojflB
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową. Obok znajduje się płytka stykowa z diodą LED RGB z katodą połączoną z GND arduino oraz z rezystorami 1 kΩ. połączonych z każdą anodą diody .
Wolny pin rezystora wpiętego do czerwonego koloru diody podepnij pod pin D12.
RVtQvBa5Ut9Zh
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową. Obok znajduje się płytka stykowa z diodą LED RGB z katodą połączoną z GND arduino oraz z rezystorami 1 kΩ. połączonych z każdą anodą diody. Rezystor koloru czerwonego diody podpięty jest do Pinu D12 Arduino.
Wolny pin rezystora wpiętego do zielonego koloru diody podepnij pod pin D11.
R1ePPaWfVA1B5
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową. Obok znajduje się płytka stykowa z diodą LED RGB z katodą połączoną z GND arduino oraz z rezystorami 1 kΩ. połączonych z każdą anodą diody. Rezystor koloru czerwonego diody podpięty jest do Pinu D12 Arduino, koloru zielonego do pinu D11 Arduino.
Wolny pin rezystora wpiętego do niebieskiego koloru diody podepnij pod pin D10.
R70Yb021OeEPO
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się moduł Arduino UNO połączony z klawiaturą membranową. Obok znajduje się płytka stykowa z diodą LED RGB z katodą połączoną z GND arduino oraz z rezystorami 1 kΩ. połączonych z każdą anodą diody. Rezystor koloru czerwonego diody podpięty jest do Pinu D12 Arduino, koloru zielonego do pinu D11 Arduino, koloru niebieskiego do pinu D10 Arduino.
Zmodyfikuj kod, dopasuj widok okna, kliknij na belkę z napisem Konsola szeregowa i uruchom symulację.
Film z działania programu.
R1DK9I3x5Q907
Film przedstawiający symulację w programie Tinkercad.
Film przedstawiający symulację w programie Tinkercad.
Film przedstawiający symulację w programie Tinkercad.
Ciekawostka
Zbudowany układ można zmodyfikować na kilka sposobów, na przykład:
dodać wyświetlacz LCD;
wykonać nakładkę (shield) na Arduino Uno, gdzie zamontowane będą wyświetlacz LCD, diody, gniazdo do podłączenia klawiatury membranowej;
zmontować układ na własnej płytce PCB zamiast na płytce stykowej.
Słownik
biblioteka
biblioteka
zbiór funkcji, zazwyczaj dostarczany do większości nakładek w celu ułatwienia pisania kodu
monitor portu szeregowego
monitor portu szeregowego
moduł służący do odbierania informacji z płytki Arduino oraz wysyłania komend/danych z komputera do Arduino
przewody połączeniowe męsko–męskie
przewody połączeniowe męsko–męskie
elastyczne przewody zakończone sztywnymi szpilkami, doskonale nadające się do łączenia pól na płytkach stykowych lub zestawach uruchomieniowych
przewody połączeniowe męsko–żeńskie
przewody połączeniowe męsko–żeńskie
elastyczne przewody zakończone z jednej strony złączem męskim, a z drugiej żeńskim; nadają się do łączenia pól na płytkach stykowych lub zestawach uruchomieniowych
wspólna katoda
wspólna katoda
w celu zaoszczędzenia miejsca niektóre elementy elektroniczne budowane są we wspólnej obudowie (np. diody LED); połączone katody sprawiają, że do sterowania wszystkimi diodami wystarczą tylko trzy wyprowadzenia, a nie cztery
dioda RGB
dioda RGB
dioda RGB to trzy diody w jednej obudowie; dzięki temu, że anody (+) lub katody (-) diod są połączone, do sterowania wszystkimi diodami potrzebne są tylko cztery wyprowadzenia – jedna nóżka wspólna oraz po jednej dla każdego z trzech kolorów
schemat ideowy układu
schemat ideowy układu
inaczej schemat elektroniczny – przedstawienie połączenia poszczególnych elementów układu w formie graficznej; każdego rodzaju element (np. tranzystor, rezystor, kondensator, przycisk, dioda) ma przypisany własny stały symbol graficzny
stabilizator liniowy
stabilizator liniowy
układ działający na następującej zasadzie: na jego wejściu podajemy napięcie ze źródła (np. z baterii), a on na swoim wyjściu udostępnia konkretne, stabilne napięcie, ale niższe od wejściowego