Arduino Lesson 13 – 4×3 & 4×4 Membrane Keypad

මැට්‍රික්ස් යතුරුපෑඩ් යනු ජංගම දුරකථන, කැල්කියුලේටර, මයික්‍රෝවේව් උදුන්, දොර අගුල් ආදියෙහි ඔබ දකින යතුරු පෑඩ්යන්ය. ඒවා ප්‍රායෝගිකව සෑම තැනකම තිබේ.

කෙසේ වෙතත්, DIY ඉලෙක්ට්‍රොනික් වලදී, ඒවා ඔබේ ව්‍යාපෘතිය සමඟ අන්තර් ක්‍රියා කිරීමට පරිශීලකයින්ට ඉඩ සලසන හොඳ ක්‍රමයක් වන අතර බොහෝ විට මෙනු එකක් භාවිතා කරන් අවස්තා වලදි, මුරපද ඇතුලු කිරීමට සහ රොබෝවරු පාලනය කිරීමට මේවා භාවිතා කළ හැකිය.

4×4 Keypad එකක් Arduino සමග භාවිතා කිරීම.

අවශ්‍යය උපාංග

උපාංග පිලිබද දැනුම

Membrane යතුරු පෑඩ් ඉතා තුනී අතර නම්‍යශීලී පටල ද්‍රව්‍යයකින් සාදා ඇත. ඒවා 4 × 3, 4 × 4, 4 × 1 වැනි ප්‍රමාණයන්ගෙන් ලබා ගැනීමට පුලුවන. ඒවායේ ප්‍රමාණය කුමක් වුවත්, ඒවා සියල්ලම එකම ආකාරයකින් ක්‍රියාත්මක වේ.

මේ පිළිබඳ එක් වැදගත් දෙයක් නම්, ඔවුන් මැලියම් ආධාරයෙන් පැමිණීම නිසා ඔබට එය ඕනෑම දෙයකට සම්බන්ධ කළ හැකිය. ඔබ කළ යුත්තේ කඩදාසි පිටුපසට ගලවා දැමීමයි.

අපි 4 × 4 යතුරු පෑඩ් එකක් උදාහරණයක් ලෙස ගනිමු. එහි යතුරු 16 ක් ඇත. සෑම යතුරකටම යටින් විශේෂ පටල ස්විචයක් ඇත.

මෙම සියලු පටල ස්විචයන් එකිනෙකට සම්බන්ධ වී ඇත්තේ පෑඩ් යට සිහින් සන්නායක කම්බි පටලයක් මඟිනි.

ඔබ තනි push buttons 16 ක් භාවිතා කර ඇත්නම්, ඒවා ක්‍රියාත්මක කිරීම සඳහා ඔබට ආදාන පින් 17 ක් (එක් එක් යතුර සඳහා එකක් සහ බිම් පින් එකක්) අවශ්‍ය වනු ඇත. කෙසේ වෙතත්, අනුකෘති සැකැස්ම සමඟ, ඔබට අවශ්‍ය වන්නේ පෑඩ් හරහා පරිලෝකනය කිරීමට මයික්‍රොකොන්ට්රෝලර් පින් 8 ක් (තීරු 4 ක් සහ පේළි 4 ක්) පමණි.

4×3 & 4×4 Membrane Keypad Pinout

4 × 3 සහ 4 × 4 membrane keypad යේ පින් පවතින ආකරය පින්තුරය පහත පරිදි වේ.

යතුරු පෑඩ් ක්‍රියා කරන්නේ කෙසේද සහ ඒවා පරිලෝකනය කරන්නේ කෙසේද?

මෙය වැඩ කරන මූලධර්මය ඉතා සරලය. බොත්තමක් එබීමෙන් පේළි රේඛා වලින් එකක් හා තීරු රේඛා වලින් එකක් සම්බන්ධ වී ඒවා අතර විදුලි ධාරාවක් ගලා යාමට ඉඩ සලසයි. උදාහරණයක් ලෙස, යතුර ‘4’ එබූ විට, 1 තීරුව සහ 2 පේළිය එකිනෙකට සම්බන්ධ වේ.

බොත්තම් එබූ විට microcontroller එක මගින් එක හදුනා ගනී. මෙය සිදු කිරීම සඳහා, එය පහත ක්‍රියා පටිපාටිය අනුගමනය කරයි.

  1. මයික්‍රොකොන්ට්රෝලර් මගින් සියලු තීරු සහ පේළි රේඛා ආදාන (INPUT) ලෙස සකසයි.
  2. ඉන්පසු එය එක් පේළියක් ගෙන එය HIGH ලෙස සකසයි.
  3. ඊට පසු, එය වරකට තීරු රේඛා පරීක්ෂා කරයි.
  4. තීරු සම්බන්ධතාවය LOW ලෙස පවතී නම්, පේළියේ බොත්තම ඔබා නැත.
  5. එය HIGH වුනොත්, මයික්‍රොකොන්ට්රෝලර් දන්නවා කුමන පේළිය HIGH ලෙස සකසා ඇත්ද සහ පරීක්ෂා කරන විට කුමන තීරුවද HIGH සැකසි ඇත්ද යන්න.
  6. අවසාන වශයෙන්, හඳුනාගත් පේළියට සහ තීරුවට අනුරූප වන බොත්තම එබූ බව එය දනී.

දැන් ඔබ membrane keypad ගැන සියල්ල දන්නා නිසා අපට එය ආර්ඩුයිනෝ සමඟ සම්බන්ධ කිරීම ආරම්භ කළ හැකිය.

මෙය සම්බන්ධ කරන ආකාරය තරමක් සරලය. යතුරු පෑඩයේ පින් 1 සමඟ ආර්ඩුයිනෝ බෝර්ඩ් එකේ ඩිජිටල් පින් 9 සමග සම්බන්ධ කිරීමෙන් ආරම්භ කරන්න. දැන් 2 සමඟ 8, 3 සමඟ 7 වැනි වම් පසින් සම්බන්ධ කිරීම දිගටම කරගෙන යන්න. සම්බන්ධ කර ඇති ආකාරය පහත දැක්වේ.

Wiring 4×3 Membrane Keypad with Arduino

Wiring 4×4 Membrane Keypad with Arduino

Keypad Library එක ඉන්ස්ට්‍රොල් කිරිම

කුමන කි එක එබුවේද යන්න තීරණය කිරීම සඳහා, අපි අඛණ්ඩව පේළි සහ තීරු පරිලෝකනය (scan) කළ යුතුය. වාසනාවකට මෙන්, Keypad.h ලියා ඇත්තේ මෙම අනවශ්‍ය සංකීර්ණතාව මගහරවා ගැනීම සඳහා වන අතර එමඟින් කුමන යතුර එබුවේ දැයි දැන ගැනීමට සරල විධානයන් නිකුත් කළ හැකිය.

Library එක ඉන්ස්ටෝල් කර ගැනීම සදහා Sketch > Include Library > Manage Libraries වෙත යන්න. Library Manager එක මගින්  libraries වල විස්තර ටික බාගත කරන තෙක් මද වේලාවක් බලා සිටින්න.

සර්ච් බොක්ස් එකේ ‘Keypad’ ලෙස ටයිප් කරන්න.  එවිට එයට අදාලව libraries කිහිපයක් පෙන්නුම් කෙරේ. මාර්ක් ස්ටැන්ලි, ඇලෙක්සැන්ඩර් බ්‍රෙවිග් විසින් නිර්මණය කරන ලද Library එක එම ලැයිස්තුවේ දැක ගත හැකිය.  එම ප්‍රවේශය මත ක්ලික් කරන්න, පසුව Install තෝරන්න.

Sketch 13.1.1

4 × 3 සහ 4 × 4 membrane keypad ක් සහිත යතුරු එබීම් හඳුනා ගන්නේ කෙසේද යන්න පිළිබඳ සම්පූර්ණ අවබෝධය පහත දැක්වෙන ප්‍රෝග්‍රෑම්  එක මඟින් ලබා දෙනු ඇති අතර වඩාත් ප්‍රායෝගික අත්හදා බැලීම් සහ ව්‍යාපෘති සඳහා භවිතා කර හැකි පරිදි එය නිර්මාණය කර ඇත.

Example Code 1 for 4×3 Keypad

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns

char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3}; //connect to the column pinouts of the keypad

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();// Read the key
  
  // Print if key pressed
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

Sketch 13.1.2

Example Code for 4×4 Keypad

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns

char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();// Read the key
  
  // Print if key pressed
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

serial monitor තුළ ප්‍රතිදානය පෙන්වන ආකාරය පහත දැක්වේ.

Code එක පැහැදිලි කිරීම

ඉහත ප්‍රෝග්‍රෑම් එක ආරම්භ වන්නේ Keypad.h library ඇතුළත් කිරීමෙන් සහ ඔබ භාවිතා කිරීමට කැමති යතුරු පෑඩයේ පේළි සහ තීරු ගණන හදුන්වා දීමෙනි.

ඊළඟට, යතුරුපෑඩයේ විශේෂිත බොත්තමක් එබූ විට මුද්‍රණය කළ යුතු අක්‍ෂර සහිත 2-dimensional array එක [ROWS] [COLS] නිවැරදි ලෙස අර්ථ දැක්විය යුතුය.

මෙම ප්‍රෝග්‍රෑම් එකේදී, යතුරු පෑඩයේ දිස්වන ආකාරයටම අක්ෂර සකසා ඇත. නමුත් ඇත්ත වශයෙන්ම ඔබට මේවා ඔබට අවශ්‍ය ඕනෑම ආකාරයකට සකස් කළ හැකිය. උදාහරණයක් ලෙස, ඔබ කැල්කියුලේටර එකක් නිර්මාණය කිරීමේ ව්‍යාපෘතියක් කිරීමට අදහස් කරන්නේ නම්, ඔබ මේ සඳහා අදාල අංක හා සංකේත භාවිතා කල හැකිය.

char keys[ROWS][COLS] = {
  {'1','2','3','4'},
  {'5','6','7','8'},
  {'9','0','+','-'},
  {'.','*','/','='}
};

ඊළඟට, අපි යතුරු පෑඩ් library එකට අදාලව වස්තුවක්(Object) නිර්මාණය කරමු.

Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS )

මේ සඳහා පරාමිති(Parameters) පහක් භාවිත කරයි.

  • makeKeymap(keys) අභ්‍යන්තර යතුරු සිතියම පරිශීලක විසින් අර්ථ දක්වා ඇති යතුරු සිතියමට සමාන වන ලෙස ආරම්භ කරයි.
  • rowPins සහ colPins යනු යතුරු පෑඩයේ පේළි සහ තීරු සම්බන්ධ කර ඇති ආර්ඩුයිනෝ බෝර්ඩ් එකේ පින්ය.
  • ROWS සහ COLS යනු යතුරු පෑඩයේ පේළි සහ තීරු ගණනයි.

යතුරු පෑඩ් වස්තුවක් නිර්මාණය කළ පසු, getKey(). ෆන්ෂන් එක යොදා ගෙන මොන කී එකද ඔබා ඇත්තේද  කියා ලබා ගැනීමට පුලුවන.

Keypad library ඇති අනෙකුත් වැදගත් functions

Keypad object සමඟ ඔබට භාවිතා කළ හැකි ප්‍රයෝජනවත් කාර්යයන් කිහිපයකට යොදාගත හැකි තවත් ෆන්ෂන් කිහිපයක් තිබේ. ඒවායින් කිහිපයක් පහත ලැයිස්තු ගත කර ඇත:

  • char waitForKey() යමෙකු යතුරක් එබෙන තුරු රැඳී සිටින්න. අවවාදයයි – යතුරක් එබෙන තෙක් එය අනෙක් සියලුම කේත අවහිර කරයි. ඒ කියන්නේ LED දැල්වීම, LCD තිර යාවත්කාලීන කිරීම්, බාධා කිරීම් හැර වෙනත් කිසිවක් නැත.
  • KeyState getState() Returns. ඕනෑම යතුරු වල වත්මන් තත්වය. IDLE, PRESSED, RELEASED සහ HOLD යන තත්ව හතර වේ.
  • boolean keyStateChanged() යතුර එක් තත්වයකින් තවත් තත්වයකට වෙනස් වූ විට දැන ගැනීමට මෙය යොදා ගනී. උදාහරණයක් ලෙස, වලංගු යතුරක් පරීක්ෂා කිරීම වෙනුවට යතුරක් එබූ විට ඔබට පරීක්ෂා කළ හැකිය.
  • setHoldTime(unsigned int time) යතුරක් ඔබා ගෙන් සිටින කාලය මිලි තත්පර වලින් ගණනය කිරීමට යොදා ගනී.
  • setDebounceTime(unsigned int time) යතුරුපෑඩය නව යතුරු එබීම / යතුරු ඔබා ගෙන් සිටිම තෙක් බලා සිටින මිලි තත්පර ගණන සකසයි.
  • addEventListener(keypadEvent) යතුරු පෑඩ් එක භාවිතා කරන විට යම් ක්‍රියාදාමයක් ආරම්භ කරයි.

Leave a Reply

Your email address will not be published. Required fields are marked *

Index