16×2 LCD දර්ශක මොඩියුලය ආර්ඩුයිනෝ සමග භාවිතා කරන ආකාරය

ඔබගේ ආර්ඩුයිනෝ ව්‍යාපෘති වල පණිවිඩ හෝ සංවේදක කියවීම් ප්‍රදර්ශනය කිරීමට අවශ්‍යද? ඒ සදහා මෙම LCD දර්ශන මනාව ගැලපේ. මේවා ඕනැම ව්‍යාපෘතියට පොදුවේ භාවිතා කළ හැකිය. යම් දෙයක් දර්ශනය කිරීමට මෙය පහසුවෙන් ඉක්මනින් සම්බන්ධ කර භාවිතා කළ හැකිය.

වෙළඳපොලේ ඇති බොහෝ එල්සීඩී සංදර්ශක 16X2 වේ. මම භාවිතා කරන ඩිස්ප්ලේ එක රුපියල් 300-500 අතර මිලකට මිලදී ගත හැකි  16 × 2 එල්සීඩී ඩිස්ප්ලේ එකකි. එහි පින් 16 ක් ඇත. එය 16 × 2 එල්සීඩී ලෙස හැඳින්වෙන්නේ ඇයි කියා ඔබ සිතනවා විය හැකිය. 16 × 2 කොටසෙහි තේරුම නම් එල්සීඩී හි පේළි 2 ක් ඇති අතර එක් පේළියකට අක්ෂර 16 ක් පෙන්විය හැකි බවයි. එම නිසා 16 × 2 එල්සීඩී තිරයකට එකවර අක්ෂර 32 ක් දක්වා ප්‍රදර්ශනය කළ හැකිය. අනුචලනය(scrolling) කිරීමත් සමඟ අක්ෂර 32 කට වඩා පෙන්වීමට හැකිය. තවද ඔබට  20X4 එල්සීඩී ඩිස්ප්ලේ (පේළි 4 ක්, අක්ෂර 20 ක්) එකක් වුවද භාවිතා කළ හැකිය. එහි පින් 14 ක් ඇත.

මෙම පාඩම මඟින් LCD තිරය මත ඔබට අවශ්‍යය අක්ෂර පෙන්විමට හා එවා තිරය තුළ  ධාවනය කිරීමට සකස් කිරීමට දැනගත යුතු සියල්ල සිද්ධාන්ත හා ක්‍රමවේද ආවරණය කරයි. හිටාචි සමගමෙන් නිපදවා ඇති HD44780 ලෙස හැඳින්වෙන LCD පාලක චිපය මගින් මෙහිදී 16 × 2 (1602) LCDs පමණක් නොව ඕනෑම වෙනස් ප්‍රමණයේ LCDs (උදාහරණයක් ලෙස 16×4, 16×1, 20×4 ආදිය) සදහා ද භාවිතා කළ හැකිය. ආර්ඩුයිනෝ සදහා දැනටමත් HD44780 LCD හැසිරවීමට library එකක් නිර්මාණය කර ඇත.

මෙම පාඩමේ සියලු ප්‍රෝග්‍රෑම් කේත ලියා ඇත්තේ සම්මත හිටාචි HD44780 ධාවකය භාවිතා කරන එල්සීඩී සඳහා ය. ඔබේ එල්සීඩී එකේ පින් 16 ක් තිබේ නම්, එහි බොහෝ විට හිටාචි HD44780 කොන්ට්‍රොලර් එක භාවිතා වේ. මෙම දර්ශක 4 බිට් ආකාරය හෝ 8 බිට් ආකාරය වයර්ගත කළ හැකිය. 8 බිට් මාදිලියට වඩා අඩු වයර් හතරක් භාවිතා කරන හෙයින් LCD 4 බිට් මාදිලියේ වයර් කිරීම සාමාන්‍යයෙන් පහසු වේ. ප්‍රායෝගිකව, ක්‍රම දෙක අතර ක්‍රියාකාරිත්වයේ කැපී පෙනෙන වෙනසක් නොමැත. මෙම පාඩමේදී, මම LCD 4 බිට් ආකාරය ඉදිරිපත් කර ඇත.

ඔබ දන්නවද?

Liquid Crystal Display යන්නෙහි වචන වල මුල් අකුරු ගොදා ගෙන LCD ලෙස කෙටි නම භාවිතා වේ. එය මූලික වශයෙන් දර්ශන ඒකකයක්(display unit) වන අතර එය දෘශ්‍ය රූපයක් නිපදවීමට liquid crystals ටික භාවිතා කරයි.

මෙම විශේෂ crystal ටිකට යම් විදුලි ධාරාවක් යොදන විට, එය තිරය පිටුපස පවතින පසුතල ආලෝකය අවහිර කරයි. එහි ප්‍රතිඵලයක් ලෙස එම ප්‍රදේශය අනෙක් ප්‍රදේශවලට සාපේක්ෂව අඳුරු වේ. තිරය මත අක්ෂර පෙන්වන්නේ එලෙසයි.

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

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

මෙම LCDs වචන පේළි සහ අක්‍ෂර පමණක් ප්‍රදර්ශනය කිරීම සඳහා වඩාත් සුදුසු වේ, එබැවින් එහි නම ‘Character LCD’ ලෙස බොහෝවිට භාවිතා කරයි.

Each rectangle contains a grid of 5×8 pixels

LCD දර්ශකයේ පිටුපස LED මගින් ඇති කරන පසුතල ආලෝකයක් ඇති අතර එහි පේළි දෙකකින් ASCII අක්ෂර 32 ක් පෙන්විය හැකිය.

ඔබ සමීපව බැලුවහොත්, දර්ශකයේ ඇති එක් එක් අක්ෂර සඳහා කුඩා සෘජුකෝණාස්‍රකාර පික්සල් ඔබට සැබවින්ම දැකිය හැකිය. මෙම සෑම සෘජුකෝණාස්රයක්ම පික්සල් 5 × 8 ක කොටුවක් ලෙස පවති.

ඒවා අකුරු පමණක් පෙන්වුවද, ඒවා විවිධ ප්‍රමාණවලින් සහ වර්ණවලින් යුක්ත වේ: නිදසුනක් ලෙස, 16 × 1, 16 × 4, 20 × 4, ප්‍රමාණයෙන් සහ පසුබිම් ආලෝකය නිල් පැහැති සුදු පාට, කළු හා කොළ ලෙස තවත් බොහෝ දේ අපට හමුවේ. සුභාරංචිය නම්, මෙම දර්ශක සියල්ලම අවශ්‍යය  වෙලාවක මාරු කළ හැකි වීමයි – ඔබ ඔබේ ව්‍යාපෘතිය තෝරාගත් යම් LCD තිරයක් සමඟ ගොඩනඟන්නේ නම් ඔබට එය ඉවත් කර ඔබට අවශ්‍ය ප්‍රමාණයෙන් හා කැමති  වර්ණයෙන් යුත් LCD භාවිතා කළ හැකිය. ඔබේ ප්‍රෝග්‍රෑම් එකේ කේතය විශාල ප්‍රමාණයට වෙනස් විය හැකි නමුත් අවම වශයෙන් රැහැන් කිරීම සමාන වේ.

16×2 Character LCD දර්ශකයක පින් පවතින ආකරය

උදාහරණ කේතයට වෙත යාමට පෙර, අපි මුලින්ම LCD Pinout දෙස බලමු.

 GND ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි GND සමග සම්බන්ධ කළ යුතුය.
 VCC ආර්ඩුයිනෝ බෝර්ඩ් එක මත වෝල්ට් 5v පින් එක හා LCD තිරයේ බල සැපයුම සම්බන්ධ කල යුතුය.
 Vo (LCD Contrast) LCD තිරයෙහි ආලෝක වෙනස සහ දීප්තිය පාලනය කරයි. පොටෙන්ටෝමීටරයක් සහිත සරල වෝල්ටීයතා බෙදීමක් භාවිතා කිරීමෙන් සියුම්ව වෙනස්කම් කළ හැකිය.
 RS (Register Select) පින් මඟින් ආර්ඩුයිනෝ විසින් LCD වෙත විධාන යවනවාද නැතහොත් දත්ත යවනවාද යන්න පැවසීමට ඉඩ දෙයි. මූලික වශයෙන් මෙම පින් එක දත්ත වලින් විධාන වෙන්කර හඳුනා ගැනීමට භාවිතා කරයි. අපි LCD වෙත විධාන යවමු (කර්සරය නිශ්චිත ස්ථානයකට සැකසීම, දර්ශනය ඉවත් කිරීම, දර්ශනය දකුණට අනුචලනය කිරීම යනාදිය). RS පින් HIGH මත සකසා ඇති විට අපි දත්ත / අක්ෂර LCD වෙත යවමු.
 R/W (Read/Write) ඔබ LCD වෙතින් දත්ත කියවනවාද නැද්ද යන්න පාලනය කිරීමයි. අපි මෙම LCD එක OUTPUT උපාංගයක් ලෙස භාවිතා කරන බැවින්, අපි මෙම පින් එක LOW ලෙස තබන්නෙමු. මෙය WRITE ආකාරයේදී  භාවිතා කරයි.
 E (Enable) දර්ශකය සක්‍රීය කිරීම සඳහා මෙම පින් භාවිතා කරයි.  එහි තේරුම නම් මෙම පින් එක LOW ලෙස සකසා ඇති විට, R/W, RS සහ දත්ත බස් මාර්ග සමඟ සිදුවන්නේ කුමක්ද යන්න LCD නොසලකයි. මෙම පින් එක HIGH ලෙස සකසා ඇති විට, LCD විසින් පැමිණෙන දත්ත සැකසෙමින් පවතී.
 D0-D7 (Data Bus) අපි දර්ශකය වෙත යවන බිට් 8 දත්ත රැගෙන යන carry සදහා මෙම පින් භාවිතා වේ. නිදසුනක් ලෙස, අපට විශාල අකුර ‘A’ අක්ෂරය දර්ශනය වීමට අවශ්‍ය නම් අපි මෙම පින් හි 0100 0001 (ASCII වගුවට අනුව) LCD වෙත යවයි.
 A-K (Anode & Cathode) LCD හි පසුබිම් ආලෝකය පාලනය කිරීම සඳහා මෙම පින් භාවිතා කරයි.

Character LCD වැඩකරන ආකාරය පරීක්ෂා කිරීම.

දැන් අපි සිත්ගන්නා සුලු දේවල් වෙතට පිවිසෙමු. අපි ඔබේ LCD තිරය වැඩකරන ආකාරය පරීක්ෂා කරමු. පළමුව, ආර්ඩුයිනෝ  Uno බෝර්ඩ් වෙතින් 5V සහ GND පින් breadboard හි බලය ලබා දෙන පේළි සමඟ සම්බන්ධ කර ඔබේ LCD දර්ශකය breadboard එකට සම්බන්ධ කරන්න.

දැන් LCD දර්ශකයට  විදුලි බලය ලබා දෙමු. LCD දර්ශකයට වෙනම බල සම්බන්ධතා දෙකක් ඇත; එනම් LCD සඳහා එකක් (පින් 1 සහ පින් 2) සහ LCD හි පසුබිම් ආලෝකය සඳහා තවත් එකකි. (පින් 15 සහ පින් 16). LCD හි 1 සහ 16 පින්  GND වෙත සම්බන්ධ කරන්න. 15 සහ 2 පින් 5V වෙත සම්බන්ධ කරන්න.

බොහෝ LCD දර්ශක වල LED පසුබිම් ආලෝකය සඳහා සාදන ලද ශ්‍රේණි ප්‍රතිරෝධකයක් ඇත. ඔබට ප්‍රතිරෝධකයක් අඩංගු නොවන LCD එකක් තිබේ නම්, ඔබට 5V සහ pin 15 අතර එකක් එකතු කිරීමට අවශ්‍ය වේ.

ශ්‍රේණි ප්‍රතිරෝධකයේ අගය ගණනය කිරීම සඳහා, දත්ත පත්‍රිකාවෙන් උපරිම පසුතල ධාරාව සහ සාමාන්‍ය පසුතල වෝල්ටීයතා පහත වැටීම සොයා බලන්න. සරල ඕම් නියමය භාවිතා කිරීමෙන් ඔබට ප්‍රතිරෝධක අගය ගණනය කළ හැකිය.

ඔබට දත්ත පත්‍රය සොයාගත නොහැකි නම්, ඕම් 220 ප්‍රතිරෝධකයක් භාවිතා කිරීම ආරක්ෂිත විය යුතුය, කෙසේ වෙතත් මෙම ඉහළ අගයක් පසුපස ආලෝකය තරමක් අඳුරු කරයි.

ඊළඟට අපි LCD දර්ශකයේ හි පින් 3 සඳහා සම්බන්ධතා සකස් කරමු, එය දර්ශකයේ වෙනස සහ දීප්තිය පාලනය කරයි. මේ සඳහා අපි 5V සහ GND අතර 10K පොටෙන්ටෝමීටරයක් සම්බන්ධ කරමු. පොටෙන්ටෝමීටරයේ මැද පින් (වයිපර්) LCD මත පින් 3 ට සම්බන්ධ කරන්න.

කතෘ හිමිකම

මෙම පාඩම් මාලාවේ සියලුම අයිතිය කතෘ සතුයි. මෙහි ඇති සියලුම පාඩම් තොරතුරු සම්පුර්ණයෙන් හෝ කොටස් වශයෙන් වෙනත් වෙබ් අඩවි වල පළකිරීම, මුද්‍රණය කර බෙදාහැරීම දඩුවම් ලැබිය හැකි වරදක් බව සලකන්න.

පරිපථ සැකැස්ම.

LCD දර්ශක භාවිතා කිරීමට පෙර ඔබ එහි පින් ටික සොල්ඩරින් කර ගත යුතුය. මෙහිදී ඔබට Male Header එකක් හෝ Female Header එකක් සම්බන්ධ කර ගත හැකිය. එවිට පහසුවෙන් Breadboard එකක් සමග භාවිතා කළ හැකිය I2C භාවිතා කරන්නේ නම් Female Header එකක් සම්බන්ධ කිරීම වඩාත් සුදුසු වේ.

Hardware connection

Adjusting LCD contrast by rotating potentiometer knob

දැන් ආර්ඩුයිනෝ බෝර්ඩ් එක සක්‍රීය කරන්න, එවිට LCD තිරයේ පසුතල ආලෝකය දැල්වෙනු ඇත. ඔබ පොටෙන්ටෝමීටරයේ කරකවන විට, සෘජුකෝණාස්‍රවල පළමු පේළිය දිස්වන බව ඔබ දැකගත යුතුය. මෙය නිවැරදිව සිදුවුවහොත් ඔබේ LCD එකෙහි පසුතල ආලෝකය පාලනය කිරීම හොදින් ක්‍රියාත්මක වේ

අපි කේත අප්ලෝඩ් කිරීමට සහ දර්ශනයට දත්ත යැවීමට පෙර, අපි LCD එකෙහි  ඉතිරි පින්  ආර්ඩුයිනෝ බෝර්ඩ් එක සමග සම්බන්ධ කරමු.

LCD තිරය සතුව පින් රාශියක් ඇත (මුළු පින් ගණන 16 කි) මෙහිදී අපි ඔබට පෙන්වන්නේ එම පින් රැහැන්ගත කරන්නේ කෙසේද යන්නයි. නමුත්, ආර්ඩුයිනෝ බෝර්ඩ් එක සමඟ සම්බන්ධ වීමට මේ සියලු පින් අපට අවශ්‍ය නොවේ.

අදාල දත්ත LCD දර්ශකයට ගෙන යන දත්ත රේඛා 8 ක් ඇති බව අපි දනිමු. නමුත් HD44780 LCD දර්ශක නිර්මාණය කර ඇත්තේ බිට් 8 (8-bit මාදිලිය) ක් වෙනුවට දත්ත බිට් 4 ක් (4-බිට් මාදිලිය) භාවිතා කරමින් LCD සමඟ කතා කළ හැකි ආකාරයටය. එම නිසා අපට පින් 4 ක් ඉතිරි කරයි.

4-බිට් සහ 8-බිට් මාදිලිය අතර වෙනස

8-බිට් මාදිලිය භාවිතා කිරීම ගත වන කාලය මෙන් දෙගුණයක් 4-බිට් මාදිලිය භාවිතා කිරීමට අවශ්‍ය වේ. එම නිසා 8-බිට් මාදිලිය වේගවත් වේ. එනම් බිට් 8 ආකාරයේදී ඔබ දත්ත එකවරම LCD වෙත යවන බැවිනි. කෙසේ වෙතත්, 4-බිට් ආකාරයේදී ඔබට බයිට් එකක් නිබල් 2 කින් බෙදිය යුතු අතර, ඉන් එකක් බිටු 4 ක් දකුණට මාරු කර ලිවීමේ මෙහෙයුම් 2 ක් සිදු කළ යුතුය.

එබැවින්, 4-බිට් මාදිලිය බොහෝ විට I / O පින් සුරැකීමට භාවිතා කරයි. නමුත්, යෙදුමක වේගය අවශ්‍ය වන විට අවම වශයෙන් 8-බිට් මාදිලිය භාවිතා වන අතර අවම වශයෙන් I / O පින් 10ක්   අවශ්‍ය වේ.

එබැවින් නැවත අපි 4-බිට් මාදිලිය භාවිතා කරමින් LCD අතුරුමුහුණත් කරනු ඇත. එබැවින් අපට අවශ්‍ය වන්නේ පින් 6 ක් පමණි:  RS, EN, D7, D6, D5, සහ D4 යන පින් LCD සමඟ සම්බන්ධ කර යුතුය.

LCD හි දත්ත පින් හතරක් වන 4 සිට 7 දක්වා සිට ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි ඩිජිටල් පින් D4 සිට D7 දක්වා සමග සම්බන්ධ වේ. LCD දර්ශකය සක්‍රීය කරන්න. LCD හි EN පින් ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි ඩිජිටල් පින් D11 හා LCD හි RS පින් එක ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි ඩිජිටල් පින් D12 හා සම්බන්ධ වේ.

පහත රූප සටහන මඟින් සියළුම සම්බන්ධතා අතරම වයර් සම්බන්ධ කරන්නේ කෙසේදැයි පැහැදිලිව දැක්වේ.

Hardware connection

Wiring connections of 16×2 character LCD and Arduino UNO

Sketch 15.1

පහත දැක්වෙන ප්‍රෝග්‍රෑම් එක මඟින් LCD හි ‘Hello World! පණිවිඩය මුද්‍රණය කෙරේ. ප්‍රෝග්‍රෑම් එක අත්හදා බලන්න.

// include the library code:
#include <LiquidCrystal.h> 

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() 
{
     // set up the LCD's number of columns and rows:
     lcd.begin(16, 2);

     // Clears the LCD screen
     lcd.clear();
}

void loop() 
{
     // Print a message to the LCD.
     lcd.setCursor(3, 0);
     lcd.print(" THINGERBITS!");

     // set the cursor to column 0, line 1
     // (note: line 1 is the second row, since counting begins with 0):
     lcd.setCursor(2, 1);
     // Print a message to the LCD.
     lcd.print(" LCD Tutorial");
}

සෑම දෙයක්ම නිවැරදිව සිදු කළ පසු, ඔබ මේ ආකරයට දර්ශකයේ දැක ගත හැකිය.

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

ඉහත ප්‍රෝග්‍රෑම් එක ආරම්භ වන්නේ LiquidCrystal library එක ඇතුළත් කිරීමෙනි. මෙම පාඩමේ මුලින් සඳහන් කළ පරිදි, ආර්ඩුයිනෝ සදහා LiquidCrystal නමින් library ක් ඇති අතර එය භාවිතා කිරීමෙන් LCD මොඩියුලය ක්‍රමලේඛනය කිරීම පහසු කරයි. ආර්ඩුයිනෝහි නිල වෙබ් අඩවියෙන් ඔබට library එක ගැන වැඩි විස්තර ගවේෂණය කළ හැකිය.

More Info : https://www.arduino.cc/en/Reference/LiquidCrystal.

//include the library code:
#include <LiquidCrystal.h>

ඊළඟට අපි LiquidCrystal library එකේ පෙන්වා දී ඇති ආකාරයට වස්තුවක්(Object) නිර්මාණය කළ යුතුයි. මෙම වස්තුව පරාමිති(Parameters) 6 ක් භාවිතා කරන අතර LCD හි RS pin, Enable pin සහ දත්ත පින් වන d4, d5, d6, සහ d7 සම්බන්ධ කර ඇත්තේ ආර්ඩුයිනෝ බෝර්ඩ් හි කුමන Arduino පින් වලටද යන්න අර්ථ දක්වයි.

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

දැන් ඔබ LiquidCrystal හි වස්තුවක් නිර්මාණය කර ඇති බැවින්, ඔබට LCD සඳහා විශේෂිත වූ විශේෂ ක්‍රම හෙවත් ෆන්ෂන් (functions) භාවිතා කර හැකිය.

‘Setup’ function එකේදී: අපි LiquidCrystal library හා සම්බන්ධ ෆන්ෂන් දෙකක් භාවිතා කරමු: පළමු ෆන්ෂන් එක begin() වේ. මෙය දර්ශකයේ අකුරු පෙන්විය යුතු ප්‍රදේශය නියම කිරීමට භාවිතා කරයි, එනම් දර්ශනයට තීරු සහ පේළි කීයක් තිබේද යන්නයි. ඔබ 16 × 2 අක්ෂර LCD භාවිතා කරන්නේ නම්, පරාමිතීන් 16 සහ 2 ද ඔබ 20 × 4 LCD භාවිතා කරන්නේ නම්, 20 සහ 4 පරාමිතීන් ලෙස නම් කල යුතුය.

lcd.begin(16, 2);

දෙවන ෆන්ෂන් එක clear() ලෙස දැක්වේ. මෙම LCD තිරය තුල දැනට දිස්වන සියලුම දේ ඉවත් කර කර්සරය ඉහළ වම් කෙළවරට ගෙන යයි.

lcd.clear();

‘loop’ ෆන්ෂන් එකේදි අපි තිරයේ පළමු පේළියේ දිස්විය යුතු පණිවිඩය පෙන්වන print() ෆන්ෂන් එක භාවිතා කරමු.

// Print a message to the LCD.
lcd.print(" Hello world!");

ඊට පසු අපි කර්සරයේ පිහිටීම දෙවන පේළියට සකසමු. setCursor() ෆන්ෂන් එක භාවිතයෙන් කර්සරයේ පිහිටීම සකස් කළ හැකිය. එමඟින් LCD හි නව පේළිය පෙන්වීමට ඔබට අවශ්‍ය ස්ථානය නියම කරයි. ඉහළ වම් කෙළවර col = 0, පේළිය = 0 ලෙස සැලකන නිසා මෙහි පරාමිති වලට (0,1) ලබා දේ.

lcd.setCursor(0, 1);
lcd.print(" LCD Tutorial");

LiquidCrystal Library තුළ ඇති තවත් වැදගත් function කිහිපයක්

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

  • home() ෆන්ෂන් එක භාවිතයෙන් දර්ශනය ඉවත් නොකර කර්සරය LCD හි ඉහළ වම්පස ස්ථානගත කිරීමට ඔබට අවශ්‍ය විට භවිතා කර හැකිය.
  • turbo C++ හෝ notepad++ වැනි යෙදුම් බොහොමයක් ඇත, යතුරුපුවරුවේ ‘insert’ යතුර එබීමෙන් කර්සරය වෙනස් වේ. එලෙසම ඔබට blink() හෝ lcd.cursor()  ෆන්ෂන් එක භාවිතා කර LCD හි කර්සරය වෙනස් කළ හැකිය.
  • blink() ෆන්ෂන් එක එක පික්සල් 5 × 8 ක බ්ලින්ක් බ්ලොක් එකක් පෙන්වන අතර lcd.cursor() විසින් ඊළඟ අක්‍ෂරය ලිවිය යුතු ස්ථානයට යටි ඉරි (රේඛාවක්) පෙන්වයි.
  • එල්සීඩී කර්සරය සැඟවීමට ඔබට noBlink() ෆන්ෂන් එක භාවිතා කර දිස්වන LCD කර්සරය සහ lcd.noCursor() මගින් එය සැගවිය හැකිය.
  • ඔබට lcd.scrollDisplayRight() හෝ lcd.scrollDisplayLeft() භාවිතා කරමින් එක් ඉඩක් දකුණට අනුචලනය කළ හැකිය. ඔබට අඛණ්ඩව පෙළ අනුචලනය කිරීමට අවශ්‍ය නම්, ඔබ මෙම කාර්යයන් ‘for loop’ තුළ භාවිතා කළ යුතුය.

LCD දර්ශකය තුළ Custom character භාවිතා කිරිම

LCD සඳහා ඔබේම අභිරුචි අක්ෂර (glyph) සහ සංකේත සෑදිය හැකිය. සම්මත ASCII අක්ෂර කට්ටලයේ කොටසක් නොවන අක්ෂරයක් ප්‍රදර්ශනය කිරීමට ඔබට අවශ්‍ය විට මෙම ක්‍රමය ඔබට අතිශයින් ප්‍රයෝජනවත් වේ.

CGROM සහ CGRAM

හිටාචි HD44780 පාලකය මත පදනම් වූ සියලුම LCD දර්ශක වල CGROM සහ CGRAM (අක්ෂර උත්පාදක ROM සහ RAM) යනුවෙන් අර්ථ දක්වා ඇති අක්ෂර ගබඩා කරන මතකයන් වර්ග දෙකක් ඇත. CGROM මතකය අස්ථායී නොවන අතර එය වෙනස් කළ නොහැක. CGRAM මතකය නැති කර හැකි වන අතර ඕනෑම වේලාවක වෙනස් කළ හැකිය.

CGROM ඔවුන්ගේ ASCII කේතය භාවිතා කර පෙන්විය හැකි සියලුම ස්ථිර අකුරු ගබඩා කිරීම සඳහා භාවිතා කරයි. උදාහරණයක් ලෙස, අපි 0x41 ලියන්නේ නම් දර්ශනය මත අපට ‘A’ අක්ෂරය ලැබේ. CGRAM යනු පරිශීලක අර්ථ දක්වන ලද අක්ෂර ගබඩා කිරීම සඳහා භාවිතා කළ හැකි තවත් මතකයක් වේ.

මෙම RAM එක බයිට් 64 කට සීමා වේ. තේරුම, 5 × 8 පික්සල් මත පදනම් වූ LCD සඳහා; පරිශීලක අර්ථ දක්වන ලද අක්ෂර 8 ක් දක්වා CGRAM හි ගබඩා කළ හැකිය. 5 × 10 පික්සල් මත පදනම් වූ LCD සඳහා, ගබඩා කළ හැක්කේ පරිශීලක අර්ථ දක්වන ලද අක්ෂර 4 ක් පමණි.

මෙම පාඩමෙදී අප කලින් සාකච්ඡා කළ පරිදි, දර්ශකයේ අක්ෂර 5 × 8 න්‍යාසයකින් පික්සෙල් වලින් සෑදී ඇති බැවින් එම අනුකෘතිය තුළ ඔබේ අභිරුචි අකුර හෝ රුපය අර්ථ දැක්විය යුතුය. එය අර්ථ දැක්වීම සඳහා ඔබ LiquidCrystal library එකෙහි createChar()  ෆන්ෂන් භාවිතා කළ හැකිය.

CreateChar() භාවිතා කිරීම සඳහා ඔබ මුලින්ම බයිට් 8 ක පෙළක් සකසා ඇත. Array එකෙහි ඇති සෑම බයිටයක්ම (බිට් 5 ක් පමණක් සලකනු ලැබේ) 5 × 8 න්‍යාසයේ අක්‍ෂරයේ එක් පේළියක් අර්ථ දක්වයි. කෙසේවෙතත්, එහි ඇති 0 සහ 1 න් දැක්වෙන්නේ අදාල පේළියේ ඇති පික්සෙල් තිබිය සක්‍රීය හෝ අක්‍රීය කළ යුතුද යන්නයි.

Custom Character Generator

ඔබට මෙහි දැක්විය හැකි අක්ෂර ගණන සීමිතයි එකම සීමාව වන්නේ LiquidCrystal library සහාය දක්වන්නේ custom characters අටකට පමණි.

පහත දැක්වෙන සටහන මඟින් ඔබට මෙම custom characters දර්ශකයෙහි භාවිතා කළ හැකි ආකාරය පෙන්වයි.

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// make some custom characters:
byte Heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

byte Bell[8] = {
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100,
0b00000
};


byte Alien[8] = {
0b11111,
0b10101,
0b11111,
0b11111,
0b01110,
0b01010,
0b11011,
0b00000
};

byte Check[8] = {
0b00000,
0b00001,
0b00011,
0b10110,
0b11100,
0b01000,
0b00000,
0b00000
};

byte Speaker[8] = {
0b00001,
0b00011,
0b01111,
0b01111,
0b01111,
0b00011,
0b00001,
0b00000
};


byte Sound[8] = {
0b00001,
0b00011,
0b00101,
0b01001,
0b01001,
0b01011,
0b11011,
0b11000
};


byte Skull[8] = {
0b00000,
0b01110,
0b10101,
0b11011,
0b01110,
0b01110,
0b00000,
0b00000
};

byte Lock[8] = {
0b01110,
0b10001,
0b10001,
0b11111,
0b11011,
0b11011,
0b11111,
0b00000
};

void setup() 
{
    // initialize LCD and set up the number of columns and rows: 
    lcd.begin(16, 2);

    // create a new character
    lcd.createChar(0, Heart);
    // create a new character
    lcd.createChar(1, Bell);
    // create a new character
    lcd.createChar(2, Alien);
    // create a new character
    lcd.createChar(3, Check);
    // create a new character
    lcd.createChar(4, Speaker);
    // create a new character
    lcd.createChar(5, Sound);
    // create a new character
    lcd.createChar(6, Skull);
    // create a new character
    lcd.createChar(7, Lock);

    // Clears the LCD screen
    lcd.clear();

    // Print a message to the lcd.
    lcd.print("Custom Character");
}

// Print All the custom characters
void loop() 
{ 
    lcd.setCursor(0, 1);
    lcd.write(byte(0));

    lcd.setCursor(2, 1);
    lcd.write(byte(1));

    lcd.setCursor(4, 1);
    lcd.write(byte(2));

    lcd.setCursor(6, 1);
    lcd.write(byte(3));

    lcd.setCursor(8, 1);
    lcd.write(byte(4));

    lcd.setCursor(10, 1);
    lcd.write(byte(5));

    lcd.setCursor(12, 1);
    lcd.write(byte(6));

    lcd.setCursor(14, 1);
    lcd.write(byte(7));
}

Library එක ඇතුළත් කිරීමෙන් පසුව, අපට බයිට් අටක custom character array එකක් නිර්මාණය කළ යුතුය.

byte Heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

මෙහිදී අපි createChar() ෆන්ෂන් එක භාවිතා කර custom character නිර්මාණය කළ යුතුය. මෙම function එක පරාමිති දෙකක් ගනී. පළමුවැන්න සහාය දක්වන custom character 8 න් එකක් වෙන් කරවා ගැනීම සඳහාය. එයට අපිට  0 සහ 7 අතර සංඛ්‍යාවක් ලබා දිය හැකිය. දෙවන පරාමිතිය බයිට් වල array එකෙහි නමයි.

// create a new character
lcd.createChar(0, Heart);

ඊළඟට loop එකෙහි, අපි write() ෆන්ෂන් එක භාවිතා කරන custom character එක ප්‍රදර්ශනය කිරීමට සහ පරාමිතියක් ලෙස අප වෙන් කළ අක්‍ෂර ගණන භාවිතා කරමු.

// byte(0) represents Heart character.
lcd.write(byte(0));

Leave a Reply

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

Index