Sunday, May 3, 2020

Arduino: របៀបប្រើប្រាស់អេក្រង់​ LCD (Liquid Crystal Display)



LCD (Liquid Crystal Display) ជាប្រភេទអេក្រង់បង្ហាញជាលក្ខណៈបន្ទាត់នៃតួអក្សរនីមួយដាច់ដោយលែកពីគ្នា។

លក្ខណៈទូទៅរបស់  LCD

តាមរូបខាងលើជា LCD ប្រភេទ 16 x 2 បានន័យថាអាបង្ហាញអក្សរបាន២ជួរ និង១៦តួក្នុងជួរនីមួយៗ។ ជួរខាងលើជាជួរទី០(សូន្យ) និងនៅក្នុងជួរនីមួយៗ តួខាងឆ្វេងជាតួទី០(សូន្យ)។



ជើងរបស់ LCD មានដូចរូបខាងលើ៖
- GND: Ground សម្រាប់ភ្ចាប់ទៅ 0V នៃប្រភពផ្គត់ផ្គង់។
- VCC: សម្រាប់ភ្ជាប់ប្រភពផ្គត់ផ្អង់ 5V។
- Vo: Display Contrast ភ្ជាប់ទៅតង់ស្យុងសម្រាប់កំណត់ភាពច្បាស់របស់អក្សរដែលត្រូវបង្ហាញ។
- RS: Register Select សម្រាប់គ្រប់គ្រង Memory របស់ LCD ដែលត្រូវផ្ទុកទិន្ន័យ។
- R/W: Read/Write កំណត់ការបញ្ជូនទិន្ន័យ(Write) ឫក៏ការទាញយកទិន្ន័យ(Read)។
- E: Enable សម្រាប់កំណត់អោយអាចបញ្ជូនទិន្ន័យទៅបាន។
D0 -D7: Data pins សម្រាប់ទិន្ន័យដែលត្រូវបញ្ជូនទៅ LCD (High or Low) ជាប្រភេទទិន្ន័យ ASCII 8 bits។ ឧ.​ 0100 0001
- A(anode)/K(cathode):  ជាជើងរបស់ LED Backlight ។


ការភ្ជាប់សៀគ្វី

- LCD RS pin to digital pin 12
- LCD Enable pin to digital pin 11
- LCD D4 pin to digital pin 5
- LCD D5 pin to digital pin 4
- LCD D6 pin to digital pin 3
- LCD D7 pin to digital pin 2

 ប្រើ Potentiometer 10k  ភ្ជាប់ទៅកាន់ Vo សម្រាប់ធ្វើការកំណត់កម្រិតភាពច្បាស់នៃអក្សរដែលបង្ហាញ (ដូចរូបខាងក្រោម)។


ការសរសេរកូដ

 នៅក្នុង Arduino បានភ្ជាប់មកជាមួយ Library LCD មកជាស្រេចរួចមកហើយ តែក្នុងករណីមិនមាន អាចទាញយកតាមតំណរខាងក្រោម៖

ធ្វើការបង្កើត Object  ថ្មីសម្រាប់ LCD  និងបញ្ជូលជើងដែលបានភ្ជាប់ ៖
​​  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);​ //(rs, enable, d4, d5, d6, d7)

ធ្វើការផ្តើមដំណើរការ LCD ជាមួយនឹងទំហំរបស់ LCD៖
  lcd.begin(16,2); // Colum, Row

ការកំណត់ទីតាំងសម្រាប់ចាប់ផ្តើមបង្ហាញ៖
  lcd.setCursor(2,1);// Colum2, Row1

ការបង្ហាញតួអក្សរ ទៅតាមទីតាំងដែលបានកំណត់ពីខាងលើ៖
  lcd.print("Hello LCD");

ការលុបអក្សរទាំងអស់នៅលើ LCD៖
​​  lcd.clear(); // Clears the LCD screen 

កូដ៖
  1. /* 
  2.  * Arduino: LCD Display 
  3.  * https://www.etronicskh.com/ 
  4. */  
  5.   
  6. #include <LiquidCrystal.h>  
  7.   
  8. LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //(rs, enable, d4, d5, d6, d7)  
  9.   
  10. void setup() {  
  11.   lcd.begin(16, 2); //(Columns, Rows)  
  12.   lcd.print("hello LCD!");  
  13.   delay(1000);  
  14. }  
  15.   
  16. void loop() {  
  17.   lcd.setCursor(0, 1); //Set print to Row 1  
  18.   lcd.print("Second Row!");  
  19.   delay(1000);  
  20.   
  21.   lcd.clear(); //clear lcd screen  
  22.   
  23.   lcd.setCursor(5,0); //Set Print to Row 0, culomn 5  
  24.   lcd.print("Hello");  
  25.   lcd.setCursor(0,1); //Set print to Row 1  
  26.   lcd.print("How are you?");  
  27.   delay(1000);  
  28.     
  29.   lcd.clear(); //clear lcd screen  
  30. }