সবাইকে স্বাগত জানাচ্ছি প্রপেলার ডিসপ্লের (POV Display) ২য় ইনস্টলমেন্টে। এই ইনস্টলমেন্টে প্রোগ্রামিং নিয়ে বিস্তারিত (যথাসম্ভব) আলচনা করা হবে।

বিঃ দ্রঃ সাইটের Consultant, Researcher সৈয়দ রাইয়ান ভাই এর আইডিয়াতে কোন প্রকার আকিকা ছাড়াই এই ডিসপ্লের নতুন নামকরণ করা হইল। নতুন নাম, "ঘুরান্টি ডিসপ্লে"

এই প্রজেক্টের প্রোগ্রাম আরডুইনোতে করা হয়েছে। কারন আরডুইনো বুঝতে সহজ, দামে সস্তা, কাজে ভাল। মজার ব্যাপার হল আপনার কাছে আরডুইনো না থাকলেও আপনি আরডুইনোতে কাজ করতে পারবেন(যদি আরডুইনোতে যে মাইক্রোকনট্রোলার ব্যবহৃত হয়, ঐ মাইক্রোকনট্রোলার আপনার কাছে থাকে)। ইনশাল্লাহ এ বিষয়ে পরে কোন এক পোস্টে আলচনা করব। এখন প্রোগ্রামে নজর দেই। নিচে প্রোগ্রামটি দেয়া হল।

 

int _[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};

int A[] = {0,1,1,1,1, 1,0,1,0,0, 0,1,1,1,1};

int B[] = {1,1,1,1,1, 1,0,1,0,1, 0,1,0,1,0};

int C[] = {0,1,1,1,0, 1,0,0,0,1, 1,0,0,0,1};

int D[] = {1,1,1,1,1, 1,0,0,0,1, 0,1,1,1,0};

int E[] = {1,1,1,1,1, 1,0,1,0,1, 1,0,1,0,1};

int F[] = {1,1,1,1,1, 1,0,1,0,0, 1,0,1,0,0};

int G[] = {0,1,1,1,0, 1,0,1,0,1, 0,0,1,1,0};

int H[] = {1,1,1,1,1, 0,0,1,0,0, 1,1,1,1,1};

int I[] = {1,0,0,0,1, 1,1,1,1,1, 1,0,0,0,1};

int J[] = {1,0,0,0,0, 1,0,0,0,1, 1,1,1,1,1};

int K[] = {1,1,1,1,1, 0,0,1,0,0, 0,1,0,1,1};

int L[] = {1,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1};

int M[] = {1,1,1,1,1, 0,1,0,0,0, 1,1,1,1,1};

int N[] = {1,1,1,1,1, 0,1,0,0,0, 1,1,1,1,1};

int O[] = {0,1,1,1,0, 1,0,0,0,1, 0,1,1,1,0};

int P[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,0,0};

int Q[] = {0,1,1,1,1, 1,0,0,1,1, 0,1,1,1,1};

int R[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,1,1};

int S[] = {0,1,0,0,1, 1,0,1,0,1, 1,0,0,1,0};

int T[] = {1,0,0,0,0, 1,1,1,1,1, 1,0,0,0,0};

int U[] = {1,1,1,1,1, 0,0,0,0,1, 1,1,1,1,1};

int V[] = {1,1,1,1,0, 0,0,0,0,1, 1,1,1,1,0};

int W[] = {1,1,1,1,1, 0,0,1,0,0, 1,1,1,1,1};

int X[] = {1,1,0,1,1, 0,0,1,0,0, 1,1,0,1,1};

int Y[] = {1,1,0,0,0, 0,0,1,1,1, 1,1,0,0,0};

int Z[] = {1,0,0,0,1, 1,0,1,0,1, 1,1,0,0,1};

int letterSpace;

int dotTime;

void setup()

  {pinMode(2, OUTPUT);

   pinMode(3, OUTPUT);

   pinMode(4, OUTPUT);

   pinMode(5, OUTPUT);

   pinMode(6, OUTPUT);

  

   letterSpace = 1;

   dotTime = 500;

  }

 

 void printLetter(int letter[])

   {

    int y;

    for (y=0; y<5; y++)

    {

      digitalWrite(y+2, letter[y]);

    }

    delayMicroseconds(dotTime);

   

    for (y=0; y<5; y++)

    {

    digitalWrite(y+2, letter[y+5]);

    }

    delayMicroseconds(dotTime);

   

    for (y=0; y<5; y++)

    {

    digitalWrite(y+2, letter[y+10]);

    }

    delayMicroseconds(dotTime);

   

    for (y=0; y<5; y++)

    {

    digitalWrite(y+2, 0);

    }

    delay(letterSpace);

   }

  

   void loop()

   {

   printLetter(N);

   printLetter(E);

   printLetter(W);

   printLetter(T);

   printLetter(O);

   printLetter(N);

   printLetter(_);

   printLetter(_);

   printLetter(_);

   printLetter(_);

   }

 

আসুন এবার কোড বিশ্লেষন করি। যারা আরডুইনো ব্যবহার করেছেন তারা সহজেই কোডটি বুঝতে পারবেন। যারা নতুন তাঁদের জন্য কোড বিশ্লেষন।

ঘুরান্টি ডিসপ্লে প্রজেক্ট এর প্রোগ্রামিং কোড বিশ্লেষণ

আরডুইনো কোডিং এর মূলত ৩ টি অংশ থাকে-

  1. Variable, constant, Header file declaration.
  2. Void setup (এখানে ইনপুট, আউটপুট পিন নির্ধারণ করা হয়)
  3. Void loop (এই অংশটিই মূলত এক্সিকিউট করবে। অর্থাৎ এখানেই সব স্টেটমেন্ট, কন্ডিশন, ইত্যাদি দেয়া হয়।) লুপের বাইরে মাঝে মধ্যে ফাংশন তৈরির প্রয়োজন পরে।

উপরের প্রোগ্রামের প্রথমেই ইংরেজী A-Z এর অ্যারে ডিক্লেয়ার করা হয়েছে। এই অ্যারেতেই প্রতিটা অক্ষরের ডাটা সংরক্ষিত আছে।

পূর্বেই বলেছিলাম 1 এবং 0 এর একাধিক সমন্বয়কে ডাটা বলা হয়। (এক্ষেত্রে বলে রাখি শুধু 1 ও 0 হচ্ছে ডাটার বাইনারী ফর্ম। অনেক ক্ষেত্রে হেক্সাডেসিমাল বা ডেসিমাল ফর্মও ব্যবহৃত হয়।) এখানে প্রতিটা অ্যারে তে কলামের ৩ টি অবস্থানের জন্য ৫ টি(5 বিটের) করে ডাটা দেয়া আছে।

যদি A এর অ্যারে লক্ষ্য করেন তাহলে দেখবেন, ১ম ৫ টি ডাটা হল 0,1,1,1,1 এর অর্থ আগের পোস্টে Fig:5 এ যেভাবে এলইডি সাজানো আছে, তার ১ম টা বাদে বাকি সবগুলো লজিক্যাল হাই অর্থাৎ এটি (Fig:1)

Fig: 1
Fig: 1

এরপরের ডাটা হল 1,0,1,0,0 অর্থাৎ এটি (Fig:2)

Fig: 2
Fig: 3

এভাবে A থেকে Z পর্যন্ত সবগুলোর ডাটা দেয়া আছে। আপনি চাইলে সংখ্যার ডাটাও যোগ করতে পারেন।

এর পরে letterSpacedotTime নামে দুটি ইন্টিজার টাইপ ভেরিয়েবল নেয়া হয়েছে। letterSpace দ্বারা একটি শব্দে প্রতিটি অক্ষরের মাঝের দূরত্ব নির্দেশ করা হয়েছে যা সেটাপ ফাংশনে ১ মাইক্রোসেকেন্ড নির্ধারণ করা হয়েছে। আর dotTime দ্বারা দুইটি শব্দের মাঝের দুরত্ব নির্দেশ করা হয়েছে যা ৫০০ মাইক্রোসেকেন্ড নির্ধারণ করা হয়েছে।

এরপর Void setup  অংশে আরডুইনোর ২, ৩, ৪, ৫, ও ৬ নং পিনকে আউটপুট হিসেবে নির্ধারণ করা হয়েছে।

সেটআপের পর লুপের আগে printLetter নামে একটি ফাংশন তৈরী করা হয়েছে। এই ফাংশনেই এলইডিতে ডাটা পাঠানোর স্টেটমেন্ট গুলো দেয়া আছে। এখানে for loop  এর সাহায্যে এক এক করে কলামের ডাটা পাঠানো হয়েছে। লক্ষ্য করলে দেখা যাবে এখানে মোট ৪ টি for লুপ নেয়া হয়েছে। ১ম তিনটি হল ৩ টি কলামের ডাটা পাঠানোর জন্য আরেকটি হল স্পেস এর জন্য অর্থাৎ একটি শব্দ থেকে আরেকটি শব্দের দুরত্ব।

শেষ অংশটি হচ্ছে লুপ। এই লুপের ভিতর ফাংশন গুলোকে কল করে দেয়া হয়েছে। এখানে যে অ্যারেকে কল করা হবে ওই অ্যারের ডাটা গুলো printLetter ফাংশনের মাধ্যমে এলইডিতের চলে যাবে।

প্রোগ্রাম শ্যাষ... 😛

কিভাবে প্রোগ্রাম কে আরডুইনো তে লোড করবেন

এবার আসি প্রোগ্রাম কিভাবে লোড করবেন। যদি আপনার কাছে আরডুইনো থাকে  তাহলে প্রোগ্রাম লোড করতে কোন ঝামেলাই নেই-

  • প্রোগ্রাম সেভ করুন,
  • আরডুইনোকে ইউএসবি ক্যাবল দিয়ে কম্পিউটারের সাথে কানেক্ট করুন।
  • Tools অপশনে গিয়ে আরডুইনোর কোন বোর্ডটি ব্যবহার করেছেন সেটা সিলেক্ট করুন (এখানে Arduino UNO R3 ব্যবহার করেছি)।
  • ডাটা কমিউনিকেশন পোর্ট সিলেক্ট করুন।
  • আপলোড বাটনে ক্লিক করে প্রোগ্রাম লোড করুন। ব্যাস...

তবে যাদের আরডুইনো বোর্ড নেই তাঁদের একটু কষ্ট করতে হবে।

  • প্রথমে যে বোর্ডটি ব্যবহার করবেন তার ডায়াগ্রাম সংগ্রহ করুন (গুগল থেকে)।
  • ওই বোর্ডে যে মাইক্রোকন্ট্রোলার ব্যবহৃত হয়েছে সেই মাইক্রোকন্ট্রোলার টি সংগ্রহ করুন।
  • এবার আরডুইনোর যে পিন গুলো আউটপুট হিসেবে নির্ধারণ করা হয়েছে ওই পিন গুলো মাইক্রোকন্ট্রোলার এর কোন পিনের সাথে সংযুক্ত তা সনাক্ত করুন।
  • এলইডি গুলোকে মাইক্রোকন্ট্রোলারের ওই পিনের সাথে কানেক্ট করুন।
  • এখন আরডুইনোর আইডিই/ সফটওয়্যারে প্রোগ্রাম লিখে কম্পাইল করুন।
  • কম্পাইল হয়ে গেলে হেক্স ফাইলটি মাইক্রোকনট্রোলারে লোড করুন

(ইনশাল্লাহ সময় হলে পরবর্তী কোন পোস্টে কিভাবে আরডুইনো ছাড়াই আরডুইনো দিয়ে কজ করা যায়, সে বিষয়ে লিখব।)। আর দেখুন আপনার ঘুরান্টি ডিসপ্লে কেমন কাজ করে। 😉

প্রপেলার ডিসপ্লে বা ঘুরান্টি ডিসপ্লে চালু অবস্থায়
প্রপেলার ডিসপ্লে বা ঘুরান্টি ডিসপ্লে চালু অবস্থায় -১

 

প্রপেলার ডিসপ্লে বা ঘুরান্টি ডিসপ্লে চালু অবস্থায় -২
প্রপেলার ডিসপ্লে বা ঘুরান্টি ডিসপ্লে চালু অবস্থায় -২

আশা করি আপনারা এই ঘুরান্টি ডিসপ্লে প্রজেক্ট টি বাস্তবে তৈরী করে আমাকে এই লেখার ব্যর্থতার হাত থেকে রক্ষা করবেন ইনশাল্লাহ... 🙂

ঘুরান্টি ডিসপ্লের ভিডিও

অবশ্যই ঘুরান্টি ডিসপ্লে বানিয়ে আমাদের কে জানাতে ভুলবেন না যেন। ধন্যবাদ সবাইকে।

9 মন্তব্য

  1. অনেক সুন্দর লিখেছেন। তবে আরডুইনো নিয়ে বিস্তারিত লিখলে অনেক উপকৃত হতাম। এটা সম্পর্কে আমার তেমন একটা ধারনা নেই। এটা কোথায় পাওয়া যায়, দাম কত, কিভাবে কাজ করে ইত্যাদি।

    • অনেক ধন্যবাদ। ইনশাল্লাহ অবশ্যই চেষ্টা করব খুব শিঘ্রই আরডুইনো নিয়ে কিছু লেখার (যতটুকু জানি !!! :p )।

    • দুঃখিত দেরিতে রিপ্লে দেয়ার জন্য।
      আসলে সার্কিটের কানেকশনের সাথে মোটরের কোন সম্পর্ক নেই। মোটর শুধু পুরো সার্কিটটাকে ঘোরায়।
      এলইডি গুলো কিভাবে সংযোগ করেছি তা নিয়ে একটা ভিডিও আপলোড দেব খুব শীঘ্রই। তবে এর একটা ছবি আছে যা দেখে এলইডির কানেকশন সম্পর্কে মোটামুটি ধারনা আসবে। আপনার মেইল বা ফেসবুক আইডি দিলে মেসেজ করে দিতাম।
      তবে এই লিঙ্কে গেলে ছবিটা পাবেন ইনশাল্লাহ। 🙂

      https://scontent-sin1-1.xx.fbcdn.net/v/t34.0-12/12540227_1003815916342599_1667574100_n.jpg?oh=175665cde5ef558815ae6680b38d3768&oe=5754B1FE

      ধন্যবাদ 🙂

কমেন্ট করুন-