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. 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.
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ę .
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.
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};