সকল বন্ধুদের স্বাগতম আমার আরডুইনো দিয়ে স্ক্রলিং এলইডি মেসেজ ডিসপ্লে প্রজেক্টে। এটা খুবই মজার একটি প্রজেক্ট। এই প্রজেক্টে একটি ৮x৮ মেট্রিক্স ডিসপ্লেতে লেখা স্ক্রল হবে। প্রথমেই বলে নিই এই প্রজেক্ট করতে হলে অবশ্যই আগে মাইক্রোকন্ট্রোলার ও তার প্রোগ্রামিং সম্পর্কে ধারনা থাকতে হবে বিশেষ করে অরডুইনো। তাহলে শুরু করা যাক।
পরিচ্ছেদসমূহ
তৈরি করতে যা লাগবে
প্রথমে দেখে নিই এটি তৈরিতে কি কি লাগবে-
- 8*8 Matrix display -1pc
- Arduino Board – 1 pc
- 1k resistor – 8 pcs
- Some Jumper wire – (According to need)
উপকরণ গুলো দেখতে কেমন?
আসুন সুপ্রিয় পাঠক উপরে বর্ণিত উপকরণ গুলোর ছবি দেখে নিই।
৮x৮ ম্যাট্রিক্স ডিসপ্লে (8*8 Matrix display)
আরডুইনো উনো (Arduino Uno)
১ কিলো ওহম মানের রেজিস্টর
জাম্পার ওয়্যার
সার্কিট ডায়াগ্রাম
এবার আমরা স্ক্রলিং এলইডি মেসেজ ডিসপ্লের সার্কিট ডায়াগ্রাম দেখে নেই।
উপরের চিত্রের মত কানেকশন করতে হবে। কানেকশন করার পর যে কাজটি করতে হবে তা হল প্রোগ্রামিং ও আরডুইনো তে কোড আপলোডিং।
নিচে সম্পূর্ণ কোড দেওয়া হল। এটি আরডুইনো তে আপলোড করে দিতে হবে। আসুন এখন কোড টি দেখি।
ম্যাট্রিক্স স্ক্রলিং ডিসপ্লের জন্য আরডুইনো কোড
char ground[8] = {8,9,10,11,12,13,A0,A1};
char ALPHA[] = {0,0,0,0,0,0,0,0,0,0,0,
60,102,96,96,96,102,60,0,0,0,
60,24,24,24,24,24,60,0,0,0,
124,102,102,124,120,108,102,0,0,0,
60,102,96,96,96,102,60,0,0,0,
102,102,102,102,102,102,60,0,0,0,
60,24,24,24,24,24,60,0,0,0,
126,24,24,24,24,24,24,0,0,0,
120,108,102,102,102,108,120,0,0,0,
60,24,24,24,24,24,60,0,0,0,
60,102,96,110,102,102,60,0,0,0,
126,96,96,120,96,96,126,0,0,0,
60,102,96,60,6,102,60,0,0,0,
126,24,24,24,24,24,24,0,0,0,
0,0,0,0,0,0,0,0,0,0,0
};
void setup()
{
for (int x=8;x<14;x++)
{
pinMode(x, OUTPUT);
}
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
for (int i=0;i<8;i++)
{
digitalWrite(ground[i],HIGH);
}
DDRD = 0xFF;
PORTD =0;
}
void loop()
{
for(int x=0;x<142;x++) //এই লাইনটি গুরুত্বপূর্ণ
{
for(int a=0;a<20;a++)
{
for (int i=0;i<8;i++)
{
digitalWrite(ground[i],LOW);
PORTD = ALPHA[i+x];
delay(1);
digitalWrite(ground[i],HIGH);
}
}
}
delay(1000);
}
কোডের বিশ্লেষণ
উপরের কোডে লক্ষ্য করি char ALPHA[] = এর পর কিছু সংখ্যা দেখা যাচ্ছে । এখানে সবার উপরে ১০ টি শূন্য ও শেষে ১০ টি শূন্য এগুলা হল স্পেস । আর এর মাঝের প্রত্যেক ১০ টি সংখ্যা হল এক একটি অক্ষর । যেমন উপরের কোডে CIRCUITDIGEST লেখা। এখানে CIRCUITDIGEST মোট ১৩ টি অক্ষর, উপরের কোডে খেয়াল করলে দেখবেন প্রথমে ১০টি ও শেষে ১০টি শূন্য এর মাঝে ১৩ টি ১০ সংখ্যা বিশিষ্ট্য লাইন আছে।
নিজের নাম লিখতে চাইলে
এখন প্রশ্ন হল আপনি যদি নিজের নাম লিখতে চান তখন। এর জন্য আপনাকে A-Z পর্যন্ত সবগুলো অক্ষরের ডিসপ্লে কোড জানতে হবে। নিচে কোড দেওয়া হল ।
24,60,102,126,102,102,102,0,0,0, // A
124,102,102,124,102,102,124,0,0,0, // B
60,102,96,96,96,102,60,0, 0,0, // C
120,108,102,102,102,108,120,0, 0,0, // D
126,96,96,120,96,96,126,0, 0,0, // E
126,96,96,120,96,96,96,0, 0,0, // F
60,102,96,110,102,102,60,0, 0,0, // G
102,102,102,126,102,102,102,0, 0,0, // H
60,24,24,24,24,24,60,0, 0,0, // I
30,12,12,12,12,108,56,0, 0,0, // J
102,108,120,112,120,108,102,0, 0,0, // K
96,96,96,96,96,96,126,0, 0,0, // L
99,119,127,107,99,99,99,0, 0,0, // M
102,118,126,126,110,102,102,0, 0,0, // N
60,102,102,102,102,102,60,0, 0,0, // O
124,102,102,124,96,96,96,0, 0,0, // P
60,102,102,102,102,60,14,0, 0,0, // Q
124,102,102,124,120,108,102,0, 0,0, // R
60,102,96,60,6,102,60,0, 0,0, // S
126,24,24,24,24,24,24,0, 0,0, // T
102,102,102,102,102,102,60,0, 0,0, // U
102,102,102,102,102,60,24,0, 0,0, // V
99,99,99,107,127,119,99,0, 0,0, // W
102,102,60,24,60,102,102,0, 0,0, // X
102,102,102,60,24,24,24,0, 0,0, // Y
126,6,12,24,48,96,126,0, 0,0, // Z
উদাহরণ
এখন মনে করি আমি DAD লিখব। এর জন্য char ALPHA[] = এরপর ১০টি শূন্য, এর পর
120,108,102,102,102,108,120,0, 0,0, // D,
24,60,102,126,102,102,102,0,0,0, // A
120,108,102,102,102,108,120,0, 0,0, // D
এই কোড টুকু পেস্ট করতে হবে এবং শেষে ১০টি শূন্য দিতে হবে। অর্থাৎDAD লিখার জন্য সম্পুর্ন কোডটি হবে এরকম-
char ALPHA[] = {0,0,0,0,0,0,0,0,0,0,0,
120,108,102,102,102,108,120,0,0,0,
24,60,102,126,102,102,102,0,0,0,
120,108,102,102,102,108,120,0,0,0,
0,0,0,0,0,0,0,0,0,0,0};
একই ভাবে আপনি চাইলে এই পদ্ধতি অনুসরণ করে অন্যান্য নাম ও লিখতে পারবেন।
বিশেষ জ্ঞাতব্য
এখানে একটি বিষয় খেয়াল রাখতে হবে, মনে করি DAD লিখব। অর্থাৎ DAD লেখার জন্য উপরের কোডটি খেয়াল করলে দেখবো যে ৫ টি লাইনে ১০টি করে সংখ্যা আছে। এই লাইন আর লাইনে অবস্থিত অক্ষরের সংখ্যা গুণ হবে।
DAD লিখার ক্ষেত্রে ৫টা লাইন আর প্রতি লাইনে ১০টা সংখ্যা অর্থাৎ ৫ গুন ১০ সমান ৫০। এই ৫০ থেকে ৮ বিয়োগ করতে হবে। বিয়োগ করে যে সংখ্যা পাব সেটা মূল কোডের একটি নির্দিষ্ঠ স্থানে বসাতে হবে। নিচে দেওয়া হল।
(মূলকোডের নিম্নোক্ত লাইন টি পরিবর্তিত হবে),
for(int x=0;x<142;x++) //150-8 (to stop overflow)
{……..
(পরিবর্তিত কোড)
for(int x=0;x<42;x++) //50-8 (to stop overflow)
{……..
উপরের কোডের আন্ডারলাইন করা 142 এর স্থানে ঐ যে উপরে আমরা ৫*১০=৫০ আর ৫০-৮= ৪২ পেলাম সেই ৪২ বসাতে হবে। প্রতিবার নাম চেঞ্জ করার সময় এই নিয়মে হিসাব করে সংখ্যা বসাতে হবে। এটি করা হয়েছে মূলত অক্ষর গুলো যাতে ডিসপ্লেতে ওভারফ্লো না হয় তার জন্য।
আশাকরি এত খুলে বলার পর আর কারও কোন সমস্যা হওয়ার কথা না। তারপরও কোন সমস্যা হলে কমেন্টে জানাবেন। আর নিচে আমার তৈরি এই প্রজেক্টের ভিডিও দেখতে পাচ্ছেন-
তৈরি প্রজেক্টের ভিডিও
নীচে দেখতে পাচ্ছেন আমার তৈরি করা ৮x৮ এলইডি ম্যাট্রিক্স স্ক্রলিং এলইডি মেসেজ ডিসপ্লে প্রজেক্ট এর একটি সংক্ষিপ্ত ভিডিও।
সমাপ্তি
আজকের মতো আপাতত এখানেই ইতি টানছি। সামনে এমনি কোন মজার প্রজেক্ট নিয়ে হাজির হবো। ততোক্ষণে এই স্ক্রলিং এলইডি মেসেজ ডিসপ্লে সার্কিট সম্পর্কে আপনার কোন অভিজ্ঞতা জানানোর থাকলে কমেন্ট করতে পারেন।
খুব সুন্দর বিশ্লেষণ ।