Lekcja 3


Klawiatura matrycowa



Już samo tło Lekcji 3 wstazuje że zajmiemy się klawiaturą 16 klawiszową. Myślę żę obczaiłeś już zwykłe przyciski dlatego możemy już przejść dalej.kla Na początku skupmy się na budowie klawiatury. Posiadamy tutaj aż 8 pinów więcej niż przy sonarze, ale spokojnie podłączenie będzie proste. Klawiatura działą na zasadzie szachowicy. Jeśli chcemy ustalić gdzie znajduje się pionek patrzymy na kolumny i wiersze A-H i 1-8. Tak samo jest z klawiaturą.Prościej wytłumaczy ci ta klawiatura.
kla_bud



Gdy wciskamy przycisk zwieramy ze sobą kolumnę z wierszem. Przykładowo wciśnięcie przycisku "1" zwiera wiersz P1 z kolumną P5. Natomiast wciśnięcie "8" zwiera wiersz P3 z kolumną P. Sprawdzając połączenia między wierszami P1-P4 oraz kolumnami P5-P8 możemy wykryć, czy i jaki przycisk został wciśnięty. Wejście od 1-4 to wiersze, a wejście od 5-8 to kolumny. Budowa i działanie klawiatury już wyjaśniona a najlepiej będzie to pokazać na działaniu , czyli na przykładzie. Zanim to tego przejdziemy powiem o tym żę będziemy musieli wykorzystać bibliotekę do obsługi klawiatury. Jest to biblioteka Keypad.h dzięki gotowej bibioteki przygotowanej do obsługi różnego rodzaju klawiatur bez wpisywania dodatkowych pętli i funkcji, co zajmowało by dodatkowe miejsce. Spójrz kiedy będziesz wgrywał kod ile będzie zajmował miejsca.
Przygotuj: klawiaturę matrycową, kabelki pinowe i płytkę.

zad1

Wgraj kod
#include Keypad.h>
const byte ROWS = 4; 
const byte COLS = 4;

byte rowPins[ROWS] = {5, 4, 3, 2}; 
byte colPins[COLS] = {6, 7, 8, 9}; 
 
char keys[ROWS][COLS] = { 
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
 
Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); 
 
void setup(){
  Serial.begin(9600);
}
void loop(){
  char klawisz = klawiatura.getKey();
  
  if (klawisz){
    Serial.println(klawisz);
  }
}

Fragment początkowy o const byte ROWS = 4; odpowiada za liczbę wierszy, a const byte COLS = 4; kolumn. Linijki byte rowPins[ROWS] = {5, 4, 3, 2}; odpowiadają za piny wejściowe wierszy , a byte colPins[COLS] = {6, 7, 8, 9}; odpowiada za piny wejściowe kolumny.
char keys[ROWS][COLS] = { 
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
Ten fragment odpowiada za przypisanie konkretnych znaków dla przycisków. Możemy przepisać jakie chcemy znaki, ale wpiszemy takie jakie są w klawiaturze. Keypad klawiatura odpowiada za inicjalizację klawiatury z biblioteką.

Sprawdźmy jak to wyszło.