ඔබේ ව්යාපෘතිය සමඟ පරිශීලකයින්ට අන්තර් ක්රියා කිරීමට ඉඩ දීම සඳහා යතුරු පුවරු(Keypad) ඉතා හොඳ ක්රමයකි. මෙනු නිර්මාණය කිරීමට, මුරපද ඇතුළත් කිරීමට සහ විවිධ ක්රීඩා සහ රොබෝ පාලනය කිරීමට ඔබට ඒවා භාවිතා කළ හැකිය. මැට්රික්ස් කිපැඩ් යනු ජංගම දුරකථන, කැල්කියුලේටර, මයික්රෝවේව් උදුන්, දොර අගුල් ආදියෙහි ඔබ දකින යතුරු පෑඩ්යන්ය. ඒවා ප්රායෝගිකව සෑම තැනකම තිබේ.
මෙම පාඩම් ඒකකයේදී,
-
- ආර්ඩුයිනෝ සමග මැට්රික්ස් කිපැඩ් එකක් භාවිතා කරන්නේ කෙස්ද යන්න ඔබට ඉගනගත හැකි වේ.
- ආර්ඩුයිනෝ මගින් කී වලට අදාල අකුරු හෙවත් සිම්බල් හඳුනා ගන්නේ කෙසේදැයි පැහැදිලි කෙරේ.
- ඕනෑම යතුරු පෑඩයක pinout සොයා ගන්නේ කෙසේදැයි ඔබට ඉගනගත හැකි වේ.
- සීරියල් මොනිටරයේ සහ LCD ඩිස්ප්ලේ වල යතුරු මුද්රණය කරන්නේ කෙසේදැයි ඉගනගත හැකි වේ.
- මුරපදයක් නිවැරදිව ඇතුළත් කළ විට 5V රිලේ සක්රිය කරන්නේ කෙසේදැයි දක්වා ඇත.
මෙම පාඩමේදී මම භාවිතා කරන්නේ 4X4 මැට්රික්ස් කිපැඩ්කි , නමුත් 3X4 කිපැඩ්කි සඳහා කේත සහ වයර් රූප සටහන් ද ඇත. ඒවා සිහින් බැවින් ඒවාට මැලියම් ආධාරකයක් ද ඇති බැවින් ඔබට ඒවා බොහෝ පැතලි මතුපිටකට ඇලවිය හැකිය. මෙම ආකාරයේ පැතලි කිපැඩ් වලට ඔබ අකමැති නම් ඝන බොත්තම් ඇති දුරකථන විලාසිතා යතුරු පෑඩ් ද ඔබට ලබා ගත හැකිය. පැරණි දුරකථන වලින් ගැලවූ යතුරු පෑඩ් පවා Arduino සමඟ ක්රියා කරයි.
Project 1 – 4×4 Keypad එකක් Arduino සමග භාවිතා කිරීම.
අවශ්යය උපාංග
![]() Arduino UNO x 1 |
![]() Breadboard x 1 |
![]() USB Cable x 1 |
![]() 4×4 keypad x1 |
Jumper M/M x 16 |
🔎 උපාංග පිලිබද දැනුම
Membrane යතුරු පෑඩ් ඉතා තුනී අතර නම්යශීලී පටල ද්රව්යයකින් සාදා ඇත. ඒවා 4 × 3, 4 × 4, 4 × 1 වැනි ප්රමාණයන්ගෙන් ලබා ගැනීමට පුලුවන. ඒවායේ ප්රමාණය කුමක් වුවත්, ඒවා සියල්ලම එකම ආකාරයකින් ක්රියාත්මක වේ.
මේ පිළිබඳ එක් වැදගත් දෙයක් නම්, ඔවුන් මැලියම් ආධාරයෙන් පැමිණීම නිසා ඔබට එය ඕනෑම දෙයකට සම්බන්ධ කළ හැකිය. ඔබ කළ යුත්තේ කඩදාසි පිටුපසට ගලවා දැමීමයි.
අපි 4 × 4 යතුරු පෑඩ් එකක් උදාහරණයක් ලෙස ගනිමු. එහි යතුරු 16 ක් ඇත. සෑම යතුරකටම යටින් විශේෂ පටල ස්විචයක් ඇත.
මෙම සියලු පටල ස්විචයන් එකිනෙකට සම්බන්ධ වී ඇත්තේ පෑඩ් යට සිහින් සන්නායක කම්බි පටලයක් මඟිනි
ඔබ තනි push buttons 16 ක් භාවිතා කර ඇත්නම්, ඒවා ක්රියාත්මක කිරීම සඳහා ඔබට ආදාන පින් 17 ක් (එක් එක් යතුර සඳහා එකක් සහ බිම් පින් එකක්) අවශ්ය වනු ඇත. කෙසේ වෙතත්, අනුකෘති සැකැස්ම සමඟ, ඔබට අවශ්ය වන්නේ පෑඩ් හරහා පරිලෝකනය කිරීමට මයික්රොකොන්ට්රෝලර් පින් 8 ක් (තීරු 4 ක් සහ පේළි 4 ක්) පමණි.
4×3 & 4×4 Membrane Keypad පින් පවතින ආකාරය
4 × 3 සහ 4 × 4 membrane keypad යේ පින් පවතින ආකරය පින්තුරය පහත පරිදි වේ.
යතුරු පෑඩ් ක්රියා කරන්නේ කෙසේද සහ ඒවා පරිලෝකනය කරන්නේ කෙසේද?
මෙය වැඩ කරන මූලධර්මය ඉතා සරලය. බොත්තමක් එබීමෙන් පේළි රේඛා වලින් එකක් හා තීරු රේඛා වලින් එකක් සම්බන්ධ වී ඒවා අතර විදුලි ධාරාවක් ගලා යාමට ඉඩ සලසයි. උදාහරණයක් ලෙස, යතුර ‘4’ එබූ විට, 1 තීරුව සහ 2 පේළිය එකිනෙකට සම්බන්ධ වේ.
බොත්තම් එබූ විට microcontroller එක මගින් එක හදුනා ගනී. මෙය සිදු කිරීම සඳහා, එය පහත ක්රියා පටිපාටිය අනුගමනය කරයි.
මයික්රොකොන්ට්රෝලර් මගින් සියලු තීරු සහ පේළි රේඛා ආදාන (INPUT) ලෙස සකසයි.
|
ඉන්පසු එය එක් පේළියක් ගෙන එය HIGH ලෙස සකසයි.
|
ඊට පසු, එය වරකට තීරු රේඛා පරීක්ෂා කරයි.
තීරු සම්බන්ධතාවය LOW ලෙස පවතී නම්, පේළියේ බොත්තම ඔබා නැත. |
එය HIGH වුනොත්, මයික්රොකොන්ට්රෝලර් දන්නවා කුමන පේළිය HIGH ලෙස සකසා ඇත්ද සහ පරීක්ෂා කරන විට කුමන තීරුවද HIGH සැකසි ඇත්ද යන්න.
අවසාන වශයෙන්, හඳුනාගත් පේළියට සහ තීරුවට අනුරූප වන බොත්තම එබූ බව එය දනී. |
දැන් ඔබ membrane keypad ගැන සියල්ල දන්නා නිසා අපට එය ආර්ඩුයිනෝ සමඟ සම්බන්ධ කිරීම ආරම්භ කළ හැකිය.
මෙය සම්බන්ධ කරන ආකාරය තරමක් සරලය. යතුරු පෑඩයේ පින් 1 සමඟ ආර්ඩුයිනෝ බෝර්ඩ් එකේ ඩිජිටල් පින් 9 සමග සම්බන්ධ කිරීමෙන් ආරම්භ කරන්න. දැන් 2 සමඟ 8, 3 සමඟ 7 වැනි වම් පසින් සම්බන්ධ කිරීම දිගටම කරගෙන යන්න. සම්බන්ධ කර ඇති ආකාරය පහත දැක්වේ.
කුමන කි එක එබුවේද යන්න තීරණය කිරීම සඳහා, අපි අඛණ්ඩව පේළි සහ තීරු පරිලෝකනය (scan) කළ යුතුය. වාසනාවකට මෙන්, Keypad.h ලියා ඇත්තේ මෙම අනවශ්ය සංකීර්ණතාව මගහරවා ගැනීම සඳහා වන අතර එමඟින් කුමන යතුර එබුවේ දැයි දැන ගැනීමට සරල විධානයන් නිකුත් කළ හැකිය.Keypad Library එක ඉන්ස්ට්රොල් කිරිම
Library එක ඉන්ස්ටෝල් කර ගැනීම සදහා Sketch > Include Library > Manage Libraries වෙත යන්න. Library Manager එක මගින් libraries වල විස්තර ටික බාගත කරන තෙක් මද වේලාවක් බලා සිටින්න.
සර්ච් බොක්ස් එකේ ‘Keypad’ ලෙස ටයිප් කරන්න. එවිට එයට අදාලව libraries කිහිපයක් පෙන්නුම් කෙරේ. මාර්ක් ස්ටැන්ලි, ඇලෙක්සැන්ඩර් බ්රෙවිග් විසින් නිර්මණය කරන ලද Library එක එම ලැයිස්තුවේ දැක ගත හැකිය. එම ප්රවේශය මත ක්ලික් කරන්න, පසුව Install තෝරන්න.
Sketch 1.1 – Example Code 1 for 4×3 Keypad
4 × 3 සහ 4 × 4 membrane 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 1.2 – Example Code 1 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) යතුරු පෑඩ් එක භාවිතා කරන විට යම් ක්රියාදාමයක් ආරම්භ කරයි.