Nettigo keypad – jak podłączyć prostą klawiaturkę do Arduino

Nettigo Keypad jest prostą klawiaturą złożoną z pięciu klawiszy. Pomyślana została ona jako część interfejsu do Twojego urządzenia – pięć klawiszy jest ułożonych tak, że można je wykorzystać jako cztery klawisze kierunku i jeden wyboru.

Całość jest odczytywana przez jeden pin – aby odczytać, który klawisz został naciśnięty trzeba zarezerwować jedno wejście analogowe. Keypad powstał jako uzupełnienie LCD Kitu, tak aby razem można było zbudować jakiś prosty interfejs do Arduino.

LCD Kit razem z keypadem ma funkcjonalność zbliżoną do LCD Shielda. Jaka jest różnica? Dzięki LCD kitowi (albo innemu wyświetlaczowi – nie 2×16 a np. 4×20) i keypadowi, Arduino może znajdować się w innym miejscu niż wyświetlacz/klawiatura.

Jak jest zbudowany fizycznie keypad? Są to połączone szeregowo rezystory. W zależności od miejsca w którym zostaną zwarte do masy, rezystancja jednej z gałęzi utworzonego dzielnika napięcia zmienia się. Znaczy to, że napięcie mierzone między dwoma gałęziami również ulega zmianie. I to cała filozofia.

Skutek takiego rozwiązania jest taki, że klawisz który jest zwiera rezystor bliżej punktu pomiaru ma większą siłę przebicia i wciskając dwa klawisze jednocześnie zawsze tylko jeden będzie odczytany.

Montaż keypada jest bardo prosty – przyciski i rezystory należy przylutować, goldpina do podłączenia można ale nie trzeba (można przylutować kabelki). Wszystkie rezystory mają jednakową wartość (10k) więc nie ma znaczenia w które miejsce który rezystor zostanie przylutowany.

Po zmontowaniu całość wygląda mniej więcej tak:

Zmontowany keypad
Zmontowany keypad

Co dalej?

Teraz trzeba go podłączyć i oprogramować. Jeżeli chodzi o podłączenie – na płytce miejsce na goldpin lub kabelki oznaczone jest AD1. Lewy pad (pole do lutowania) ma kwadratowy kształt – to pin nr 1. I tak kolejno:

  1. Zasilanie (+5V)
  2. Sygnał
  3. Masa

Czyli podłączamy zasilanie i masę a sygnał podłączamy do wejścia analogowego Arduino. Ze strony produktu można ściągnąć bibliotekę do obsługi Keypada. Jest ona też dostępna w formie repozytorium na GitHubie. Bibliotekę ściągnąć i rozpakować do sketchbook/libraries. Po uruchomieniu Arduino IDE pojawi się opcja Sketch/Import Library/NettigoKeypad. Prosty przykład jest w File/Examples/NettigoKeypad/Examples.

Pierwsza wersja ma tylko jedną funkcję – wywołana zwraca kod wciśniętego klawisza. W przyszłości planuję dodać ich więcej (funkcji nie klawiszy :) ), ale na razie to musi wystarczyć.

Najpierw podłączmy LCD do Arduino (numery pinów LCD, wersja LCD oparta o WC1602 – z wydzielonym zasilaniem podświetlenia):

1 – Masa
2 – +5V
3 – wyjście z potencjometru (środkowa nóżka)
4 – D2 na Arduino
5 – masa
6 – D3 na Arduino
7 – 10 – nie podłączone
11 – 14 – D4-D7 na Arduino
15 – +5V (zasilanie podświetlenia)
16 – masa

Sygnał z keydpada podłączamy do A0. Teraz szkic:

#include <NettigoKeypad.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(2,3,4,5,6,7);

NG_Keypad keypad;

char* keys[] = { "NONE", "SELECT", "LEFT", "DOWN", "UP", "RIGHT" };

void setup(){
  lcd.begin(16,2);
  lcd.print("Selected key:");
}

void loop(){
  int rd;
  rd = analogRead(0);
  lcd.setCursor(0,1);
  lcd.print( keys[ keypad.key_pressed(rd) ] );
  lcd.print("      ");
  delay(100);
}

Szkic ten jest dołączony do biblioteki jako przykład BasicRead

Linia: NG_Keypad keypad; odpowiada za stworzenie obiektu, który będzie wykorzystany do odczytu wciśniętego klawisza. setup inicjuje wyświetlacz LCD. W funkcji loop odczytujemy wartość z wejścia analogowego 0 (tam gdzie podłączony został sygnał z keypada). Wywołana funkcja keypad.key_pressed z analogowej wartości sygnału zwraca kod klawisza. Na LCD wypisywany jest opis klawisza wzięty z tablicy keys.

Całość zmontowana wygląda tak:

Keypad i LCD kit razem
Keypad i LCD kit razem