Arduino – sterowanie z klawiatury membranowej

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

}

 

 972 total views,  2 views today

Translate »