Arduino – sterowanie z klawiatury membranowej
Platformę Arduino można wykorzystać na bardzo wiele sposobów. Oprócz licznych urządzeń wyjściowych, takich jak np. sterowniki silników i serwomechanizmów, moduły łączności bezprzewodowej czy wyświetlacze, do Arduino możemy podłączyć także liczne urządzenia wejściowe. Do tej grupy urządzeń zaliczają się m.in. potencjometry i przyciski. Jeśli natomiast nasz projekt jest bardziej rozbudowany, warto wybrać moduł stanowiący zbiór odpowiednio połączonej matrycy przycisków, jakim jest np. klawiatura membranowa.
Arduino – odczyt danych wejściowych z klawiatury
Niniejszy artykuł jest krótkim poradnikiem opisującym sposób podłączenia i programowania płytki Arduino z klawiaturą w układzie 4×3.
Sterowanie Arduino z klawiatury – zestawienie niezbędnych podzespołów
W tym poradniku, do zrealizowania naszego projektu będziemy potrzebowali następujących podzespołów:
- Płytka Arduino UNO R3 (lub inna kompatybilna sprzętowo)
- Klawiatura numeryczna membranowa samoprzylepna 12-klawiszowa w układzie 4×3
- Przewody połączeniowe do płytek stykowych
Zasilanie płytki Arduino doprowadzamy bezpośrednio przez port USB, poprzez który płytka będzie się komunikowała z komputerem
Arduino klawiatura – budowa modułu
Moduł klawiatury do Arduino, który użyjemy w naszym projekcie, przypomina swoim układem klawiszy standardową klawiaturę spotykaną w telefonach stacjonarnych oraz telefonach komórkowych. Klawiatura membranowa do Arduino jest w układzie 4×3, tj. zawiera cztery wiersze klawiszy, a każdy z nich zawiera po trzy klawisze. Na klawiaturze znajdziemy cyfry arabskie od “0” do “9”, gwiazdkę “*” i krzyżyk “#”. Możemy także wybrać inne klawiatury, które posiadają mniejszą bądź większą liczbę przycisków, co daje możliwości tworzenia szerokiego zakresu aplikacji zróżnicowanych pod kątem stopnia rozbudowy sterowania, a także przeznaczenia docelowego. Dla naszego przypadku, opisywana klawiatura w układzie 4×3 posiada 12 przycisków oraz taśmę 8-przewodową ze złączem żeńskim 7-pinowym o rastrze 2,54mm, zgodnym z rastrem wyprowadzeń na płytce Arduino UNO R3. Pierwsze cztery wyprowadzenia odpowiadają wierszom klawiszy, a trzy ostatnie odpowiadają kolumnom klawiszy. W ten sposób, każdy z klawiszy ma określone swoje współrzędne, które obejmują numer wiersza i numer kolumny. I tak przykładowo, kiedy naciśniemy klawisz “1”, sygnał zostanie odebrany jako współrzędne “wiersz nr 1, kolumna nr 1”, podczas gdy dla krzyżyka “#”, będą to współrzędne “wiersz nr 4, kolumna nr 3”.
Podłączenie modułu klawiatury membranowej do Arduino
Do podłączenia modułu klawiatury, skorzystamy z pinów D2 – D8 w sekcji “DIGITAL – PWM~”. Przyporządkowanie poszczególnych pinów klawiatury do pinów Arduino jest następujące i będzie ono także miało swoje odwzorowanie w kodzie programu w następnej części niniejszego artykułu:
- kolumna nr 3 -> pin D2
- kolumna nr 2 -> pin D3
- kolumna nr 1 -> pin D4
- wiersz nr 4 -> D5
- wiersz nr 3 -> D6
- wiersz nr 2 -> D7
- wiersz nr 1 -> D8
Kod programu
Poniższy kod programu wystarczy skopiować i wkleić w obszar szkicu w środowisku Arduino IDE. Aby program zadziałał, należy pobrać i załączyć biblioteki Key.h i Keypad.h, które są niezbędne do obsługi modułu klawiatury.
#include <Key.h>
#include <Keypad.h> // zalaczenie biblioteki obslugujacej klawiature
const byte WR = 4; // liczba wierszy
const byte KOL = 3; // liczba kolumn
char keys[WR][KOL] = { // kompletny uklad klawiszy
{’1′,’2′,’3′},
{’4′,’5′,’6′},
{’7′,’8′,’9′},
{’#’,’0′,’*’}
};
byte rowPins[WR] = {8, 7, 6, 5}; // mapowanie nr pinow Arduino do wierszy 1, 2, 3, 4
byte colPins[KOL] = {4, 3, 2}; // mapowanie nr pinow Arduino do kolumn 1, 2, 3
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, WR, KOL);
void setup()
{
Serial.begin(9600); // uruchomienie transmisji szeregowej
}
void loop()
{
char key = keypad.getKey(); // odczyt przyciskow
if (key != NO_KEY)
Serial.println(key); // wyswietla znak nacisnietego klawisza
}