প্রথমে এলসিডি ডিসপ্লে নিয়ে কিছু কথা বলে নেই। বাজারে আরডুইনো অথবা অন্নান্ন মাইক্রোকন্ট্রোলের দিয়ে চালানোর মতো অনেক ধরণের ডিসপ্লে পাওয়া যা। এগুলো কে আমরা দুই ভাগে ভাগ করতে পারি।
- ক্যারেক্টার এলসিডি ডিসপ্লে
- গ্রাফিক্স এলসিডি ডিসপ্লে
ক্যারেক্টার এলসিডি ডিসপ্লে তে শুধু বর্ণ অথবা সংখ্যা লিখা যায় আর গ্রাফিক্স এলসিডি ডিসপ্লে তে বর্ণ এবং সংখ্যা লিখার পাশাপাশি ছবি, লোগো এবং বিভিন্ন সাইজের বর্ণ লিখা যায়। গ্রাফিক্স এলসিডি আবার সাদাকালো এবং রঙিন দুই ধরণের ই পাওয়া যায় এবং এইগুলি বিভিন্ন সাইজের হয়ে থাকে। আমাদের আজকের টিউটোরিয়াল এ আমরা দেখবো কিভাবে আমরা ক্যারেক্টার এলসিডি নিয়ে কাজ করতে পারি। অন্য কোনো টিউটোরিয়াল এ আমরা গ্রাফিক্স এলসিডি নিয়ে কাজ করবো।
ক্যারেক্টার এলসিডি আবার বিভিন্ন ধরণের হয়ে থাকে। যেমন কোনোটাতে সর্বোচ্চ ১৬ টি বর্ণ লিখা যায় (১৬x১), কোনোটাতে ১৬ টি করে দুই লাইনে সর্বোচ্চ ৩২ টি বর্ণ লিখা যায় (১৬x২)। আমাদের কতগুলি বর্ণ লিখতে হবে সে হিসাবে আমরা এলসিডি নির্বাচন করবো। সবগুলির জন্যেই সংযোগ এবং প্রোগ্রাম একই। তারমানে আমরা যেকোনো একটা শিখলেই অন্যগুলি দিয়েও কাজ করতে পারবো।
ক্যারেক্টার এলসিডি তে মোট ১৬ টি পিন থাকে যেটা নিচের ছবিতে দেখানো হয়েছে।

১৬ টি পিনের মধ্যে ৬ টি পিন আরডুইনো অথবা মাইক্রোকন্ট্রোলেরের সাথে সংযোগ দিলেই হয়। সে পিন গুলি হলো (RS, EN, D4, D5, D6, D7)। (D0, D1, D2, D3) পিনগুলি কে কোনোকিছুর সাথে সংযোগ করার দরকার নেই।GND, RW এবং Backlight(-) পিন কে ব্যাটারির ঋণাত্মক পিন (-) অথবা আরডুইনোর গ্রাউন্ড (GND) এর সাথে সংযোগ করতে হবে। VCC পিন কে সরাসরি ব্যাটারির ৫ ভোল্ট এ অথবা আরডুইনোর 5V পিন এ আর Backlight (+) পিন কে একটা ১৫০ ওহম থেকে ৪৭০ ওহমের যেকোনো রোধ এর মাধ্যমে ৫ ভোল্ট এর সাথে সংযোগ করতে হবে। Contrast পিন এর মাধ্যমে আমরা এলসিডির কন্ট্রাস্ট পরিবর্তন করতে পারি। এই পিনে ০ থেকে ৫ ভোল্ট এর মধ্যে যেকোনো ভোল্টেজ দিয়ে আমরা কন্ট্রাস্ট কে কমিয়ে বাড়িয়ে নিতে পার। ভোল্টেজ যত ০ এর কাছাকাছি হবে কন্ট্রাস্ট তত বেশি হবে আর ভোল্টেজ যত বেশি দিবো কন্ট্রাস্ট তত কমে আসবে। কন্ট্রাস্ট পরিবর্তনের সুবিধা পাবার জন্যেই আমরা একটি পরিবর্তনশীল রোধ (variable resistor) Contrast পিন এর সাথে সংযোগ করে থাকি। নিচের ছবি তে আরডুইনোর সাথে এলসিডি ডিসপ্লের একটা পরিপূর্ণ সংযোগ দেখানো হয়েছে।

প্রোগ্রামিং (Programming)
সংযোগ তো হলো, এবার কোড লেখার পালা। নিচের কোড আপলোড করলে এলসিডি তে makerbangla.com লেখা দেখা যাবে।
// include the library code:
#include <LiquidCrystal.h>
// with the arduino pin number it is connected to
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("makerbangla.com");
}
void loop() {
}

এবার উপররের কোড কে বেখ্যা করা যাক। প্রথম লাইন (#include <LiquidCrystal.h>) লেখার মাধ্যমে আমরা এলসিডি লাইব্রেরি ইম্পোর্ট করেছি। পরের লাইন এর মাধ্যমে আমরা এলসিডির সাথে আরডুইনোর সংযোগ কনফিগার (configure) করেছি। এখানে প্রথম বন্ধনীর ভিতরে আরডুইনোর সাথে সংযোগ করা এলসিডির ৬ টি পিনের নাম্বার ক্রম অনুসারে লিখতে হয়। পিন নাম্বার এর ক্রম হলো যথাক্রমে RS, EN, D4, D5, D6, D7। আমরা যেহেতু RS পিন কে আরডুইনোর ২ নাম্বার, EN পিন কে ৩ নাম্বার, D4 কে ৪ নাম্বার, D5 কে ৫ নাম্বার, D6 কে ৬ নাম্বার এবং D7 পিন কে ৭ নাম্বার পিন এ সংযোগ করেছি তাই কোডে আমরা লিখেছি :
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
কেউ যদি এলসিডির RS পিন কে আরডুইনোর ১২ আর EN পিন কে আরডুইনোর ১৩ নাম্বার পিন এর সাথে সংযোগ করে বাকি সংযোগ গুলি অপরিবর্তিত রেখে তাহলে তাকে কোডে লিখতে হবে :
LiquidCrystal lcd(12, 13, 4, 5, 6, 7);
এবার setup() function এর ভিতরে যাওয়া যাক। এর ভিতরে প্রথম লাইন হল :
lcd.begin(16, 2);
এই লাইন এর মাধ্যমে আমরা এলসিডি কে initialize করেছি। Initialize করার সময় বলে দিতে হবে আমাদের এলসিডি কোন ধরণের। আমরা যেহেতু ১৬ x ২ নিয়েছি তাই আমরা লিখেছি 16, 2 । কারো এলসিডি যদি ২০ x ৪ হয় তাহলে তাকে লিখতে হবে:
lcd.begin(20, 4);
এলসিডি ডিসপ্লে তে যদি আমরা কিছু ডিসপ্লে করতে চাই তাহলে lcd.print( ) function দিয়ে সেটা লিখতে হয়। যেমন আমাদের উপরের প্রোগ্রামে আমরা লিখেছি :
lcd.print("makerbangla.com");
আর সে জন্যেই ডিসপ্লে তে makerbangla.com লিখাটি দেখা যাচ্ছে। কার্সর সেট না করলে ডিসপ্লের লিখা ০,০ অবস্থান থেকে শুরু হয়। নিচের ছবি থেকে লেখার অবস্থান সম্পর্কে ধারণা পাওয়া যাবে।

যদি আমরা ২য় লাইনের ৫ম অবস্থানে Hello লিখতে চাই তাহলে আমাদেরকে আগে সেখানে কার্সর সেট করে নিতে হবে আর আমাদের কোড হবে নিন্মরূপ :
lcd.setCursor(4, 1);
lcd.print("Hello");
setCursor( ) function এর প্রথম নাম্বার (৪) হল কলাম নাম্বার আর (,) পর ২য় নাম্বার (১) হলো row নাম্বার। যেহেতু row, column এর গণনা ০ থেকে শুরু হয় তাই ৫ম অবস্থানের জন্যে ৪ লিখতে হয়। lcd.print( ) function এর ভিতরে দুইটা কোটেশন দিয়ে যা লিখা হবে তাই ডিসপ্লে তে দেখা যাবে। তবে মনে রাখতে হবে ১৬ x ২ এলসিডির জন্যে সেটা প্রতি লাইনে সর্বোচ্চ ১৬ টি বর্ণ পর্যন্ত হতে পারে।
যদি আমরা void loop( ) ফাঙ্কশন থেকে ডিসপ্লে তে কিছু লিখতে চাই তবে আমাদের কে lcd.clear( ) ফাঙ্কশন বেবহার করতে হবে কারণ void loop( ) ফাঙ্কশন প্রতিনিয়ত আপডেট হয়। আর এলসিডির লেখা আপডেট করতে হলে আগের লিখা মুছে নতুন করে লিখতে হয়। যেমন আমরা যদি এলসিডি তে নিচের মতো লেখা দেখতে চাই তাহলে সম্পূর্ণ আরডুইনো কোড হবে নিন্মরূপ :

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.clear();
lcd.print("Hello");
lcd.setCursor(5, 1);
lcd.print("Makerbangla");
delay(1000);
}
নিচের লিংক থেকে এই টিউটোরিয়াল টি সিমুলেশন করে দেখা যাবে।
https://www.tinkercad.com/things/7IzoVU9fq5h
এই টিউটোরিয়াল টি যেকোনো আরডুইনো বোর্ডেই কাজ করবে যেমন Uno, Nano, Mega ইত্যাদি।