How to write an Arduino Library | নিজেই লিখুন আরডুইনো লাইব্রেরি

আরডুইনো আইডিইতে প্রোগ্রাম লিখতে হলে আমরা বেশকিছু লাইব্রেরি ব্যবহার করি। কিছু লাইব্রেরি আরডুইনোতেই ইন-বিল্ট। যেমনঃ Liquidcrystal.h, SD.h, servo.h ইত্যাদি।

/wp:paragraph wp:paragraph

কিছু কিছু লাইব্রেরি আবার ইন্টারনেট থেকে ডাউনলোড করে ইন্সটল করে নিতে হয়। যেমন, TFT.h, TinyGPS.h, ইত্যাদি আরও অনেক লাইব্রেরি। ইন্টারনেটে আরডুইনো লাইব্রেরির সহজলভ্যতা আরডুইনোর প্রজেক্টগুলোকে করেছে সংক্ষিপ্ত এবং সকলের জন্য সহজ। লাইব্রেরি ইন্সটল করে কয়েকলাইন কোড লিখলেই প্রজেক্ট শেষ। কিন্তু, যদি এমনকোনো ডিভাইস নিয়ে আমাদের কখনও কাজ করতে হয়, যার লাইব্রেরি রেডিমেড নেই? আমরা কি পারব ইন্টারনেটের উপর নির্ভর না করে নিজেদের লাইব্রেরি নিজেরাই লিখতে?

/wp:paragraph wp:paragraph

এই টিউটোরিয়ালে আমরা শিখব লাইব্রেরি লেখা। উদাহরন হিসেবে বেছে নিলাম Gravity: Analog Turbidity Sensor For Arduino। এই সেন্সরটি পানির টারবিডিটি অর্থ্যাৎ, পানি কতটা ঘোলা তা নির্ণয় করে। Turbidity sensor এর আউটপুট পিন থেকে অ্যানালগ রিড করে প্রথমে ভোল্টেজে রুপান্তর করে নিতে হয়। অর্থ্যাৎ,

/wp:paragraph wp:code
Voltage=analogvalue*5.00/1024.00
/wp:code wp:paragraph

তারপর এই ভোল্টেজ থেকে একটি সূত্রের সাহায্যে টারবিডিটি নির্ণয় করা হয়। সূত্রটি হচ্ছে,

/wp:paragraph wp:code
 Turbidity=-1120*Voltage²+5720voltage-4352.9
/wp:code wp:paragraph {“align”:”left”}

এই Turbidity sensor এর জন্যই আমরা একটি আরডুইনো লাইব্রেরি তৈরী করব। আগেই বলে রাখি, টারবিডিটি সেন্সরটি ব্যবহার করা খুবই সহজ। কোনোরকম লাইব্রেরি ছাড়াই অল্প কয়েকলাইন কোড লিখেই ব্যবহার করা যায়। যেহেতু, লাইব্রেরি লেখা শিখতে একটি খুব সহজ কিন্তু কার্যকর একটি উদাহরন দরকার, তাই এই সেন্সরের জন্যই লাইব্রেরি লেখা হল।

/wp:paragraph wp:table
প্রয়োজনীয় যন্ত্রপাতি পরিমাণ প্রোডাক্ট লিংক
Arduino UNO-R3 1 এখানে ক্লিক করুন
Gravity: Analog Turbidity Sensor For Arduino 1 এখানে ক্লিক করুন
Male to male jumpers 3 এখানে ক্লিক করুন
/wp:table wp:paragraph {“textColor”:”pale-cyan-blue”,”fontSize”:”medium”}

সার্কিট কানেকশনঃ

/wp:paragraph wp:paragraph

আরডুইনো এবং টারবিডিটি সেন্সরের মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

/wp:paragraph wp:gallery {“ids”:[56195],”className”:”alignwide”} /wp:gallery wp:table
Arduino UNO-R3 Turbidity sensor
5V VCC
GND GND
A0 Output
/wp:table wp:paragraph {“textColor”:”pale-cyan-blue”,”fontSize”:”medium”}

লাইব্রেরি ও মূল প্রোগ্রামঃ

/wp:paragraph wp:paragraph

যেকোনো আরডুইনো লাইব্রেরিতে দুটি ফাইল থাকবেই। একটি হল, .cpp আরেকটি .h। সুতরাং আজকে উদাহরনস্বরুপ যে প্রোগ্রামটি লিখব তাতে তিনটি ফাইল থাকবে। যার মধ্যে দুটি হল লাইব্রেরি ফাইল, আরেকটি মূল প্রোগ্রাম।

/wp:paragraph wp:paragraph

প্রথমে আমরা আরডুইনো আইডিইতে একটি নতুন ফাইল ওপেন করবো। যার নাম হবে-turbidity.ino। এরপর add new tab এ ক্লিক করে দুটি নতুন ট্যাব যোগ করব।

/wp:paragraph wp:image {“id”:56206}
/wp:image wp:paragraph

একটির নাম দেব turbidity.h। আরেকটির নাম দেব turbidity.cpp।

/wp:paragraph wp:paragraph

turbidity.h– এটি হচ্ছে হেডার ফাইল। এই ফাইলে সকল ক্লাস এবং ক্লাসের অন্তর্ভুক্ত অবজেক্ট এবং ফাংশনগুলোকে ডিভাইন করা হবে।

/wp:paragraph wp:image {“id”:56205}
/wp:image wp:paragraph

উপরের ছবিটি হচ্ছে turbitity.h অংশের কোড। এখানে Turbidity নামে একটি ক্লাস ডিফাইন করা হয়েছে। ক্লাসটিতে রয়েছে একই নামের একটি কন্সট্রাকটর। আরও আছে দুটি ফাংশন ফাংশন দুটির নাম হচ্ছে voltagecalc() এবং turbiditycalc(). এই ফাংশনদুটি যথাক্রমে টারবিডিটি সেন্সরের অ্যানালগ আউটপুট ভোল্টেজ এবং টারবিডিটি হিসাব করবে। turbidity.ino ফাইলটির শুরুতেই turbidity.h ফাইলটি ইনক্লুড করতে হবে।

/wp:paragraph wp:paragraph

turbidity.cpp-এই ফাইলের শুরুতেও turbidity.h কে ইনক্লুড করে নিতে হবে। turbidity.h এ যেসকল কন্সট্রাকটর এবং ফাংশন ডিফাইন করা হয়েছে, সেই ফাংশনগুলো লেখা হবে।

/wp:paragraph wp:gallery {“ids”:[57016]} /wp:gallery wp:paragraph

এখানে, শুরুতেই sensorvalue নামক একটি ইন্টিজার টাইপ গ্লোবাল ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে।আমাদের এক্সপেরিমেন্টে টারবিডিটি সেন্সরের আউটপুট আরডুইনোর A0 পিনের সাথে কানেক্ট করা ছিল। তাই, এখানে আমরা লিখেছি-

/wp:paragraph wp:code
 int sensorvalue=A0;
/wp:code wp:paragraph {“align”:”center”}

এরপরেই আরেকটি voltage নামক একটি ফ্লোট টাইপ গ্লোবাল ভ্যরিয়েবল ডিক্লেয়ার করা হয়েছে।

/wp:paragraph wp:code
float voltage;
/wp:code wp:paragraph {“align”:”left”}

voltagecalc() নামক ফাংশনটি যেহেতু Turbidity Class এর সদস্য, তাই ফাংশনের নামের শুরুতে Turbidity:: লেখা হয়েছে।

/wp:paragraph wp:code
float Turbidity::voltagecalc()
{
  int sensorvalue=analogRead(sensorpin);
  float voltage=sensorvalue*5.00/1024.00;
  return(voltage);

}
/wp:code wp:paragraph

এই ফাংশনটি A0 পিনের অ্যানালগ ভ্যালু রিড করে sensorvalue নামক ভ্যারিয়েবলে সেইভ করে। তারপর সেন্সরভ্যালুকে ভোল্টেজে রুপান্তর করে voltage নামক ভ্যারিয়েবলে জমা রাখে।
এই ফাংশনটিকে কল করলে ভাংশনটি ভোল্টেজ রিটার্ন করবে।

/wp:paragraph wp:paragraph

একইভাবে turbiditycalc() নামক ফাংশনটি ভোল্টেজ থেকে টারবিডিটি হিসাব করে টারবিডিটি রিটার্ন করবে।

/wp:paragraph wp:code
float Turbidity::turbiditycalc()
{
  float ax2=-1120.40*voltage;
  ax2=ax2*voltage;
  float bx=5742.30*voltage;
  float c=-4352.90;
  float turbidity=ax2+bx+c;
  return(turbidity);
}
/wp:code wp:paragraph

এবার মূল প্রোগ্রামে যাওয়া যাক।

/wp:paragraph wp:paragraph

turbidity.ino– এটি হচ্ছে মূল প্রোগ্রাম।

/wp:paragraph wp:image {“id”:56204}
/wp:image wp:paragraph

turbidy.cpp ফাইলে যে ফাংশনগুলো লেখা হয়েছে সেগুলোকেই মূল প্রোগ্রামে কল করা হবে। আগেই বলা হয়েছে প্রোগ্রামের শুরুতে অবশ্যই turbidity.h হেডার ফাইলকে ইনক্লুড করে নিতে হবে।

/wp:paragraph wp:paragraph

এখানে, Turbidity ক্লাসটির একটি অবজেক্ট ডিক্লেয়ার করা হয়েছে।

/wp:paragraph wp:code
Turbidity turbidity;
/wp:code wp:paragraph

সেটআপ ফাংশনে ৯৬০০ বড রেটে সিরিয়াল কমিউনিকেশন শুরু করা হয়েছে।

/wp:paragraph wp:code
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);

}
/wp:code wp:paragraph

লুপ ফাংশনে Turbidity ক্লাসের voltagecalc() এবং turbiditycalc() ফাংশনকে কল করা হয়েছে।

/wp:paragraph wp:code
void loop() {
  // put your main code here, to run repeatedly:
  Serial.print("Voltage:");
  Serial.print(turbidity.voltagecalc());
  Serial.print(", ");
  Serial.print("Turbidity:");
  Serial.println(turbidity.turbiditycalc());

delay(2000);
}
/wp:code wp:paragraph

এবং এই .ino ফাইলটি আরডুইনোতে আপলোড করার পর আমরা সিরিয়াল মনিটরে টারবিডিটি সেন্সরের আউটপুট দেখতে পাব।

/wp:paragraph wp:image {“id”:56193}
/wp:image wp:paragraph

লাইব্রেরি ইন্সটল করাঃ কোডটি যেখানে সেইভ হয়েছে সেই ফোল্ডারে যান। তারপর .cpp ও .h ফাইলদুটো কপি করুন।

/wp:paragraph wp:gallery {“ids”:[56187]} /wp:gallery wp:paragraph

তারপর, আপনার কম্পিউটারে আরডুইনো যে ড্রাইভে ইন্সটল করা সেই ড্রাইভে Arduino ফোল্ডারে ক্লিক করুন। তারপর libraries ফোল্ডারের ভেতরে turbidity নামক একটি নতুন ফোল্ডার খুলুন। তারপর কপি করা ফাইলদুটো ওখানে পেস্ট করে দিন। লাইব্রেরিটি ইন্সটল হয়ে গেছে। ভবিষ্যতে অন্য যেকোনো প্রোগ্রামে এই লাইব্রেরিকে ইনক্লুড এবং ব্যবহার করা যাবে।

/wp:paragraph wp:gallery {“ids”:[56188]} /wp:gallery wp:paragraph

এবার ছোট্ট আরও একটা কাজ বাকি। এটা না করলেও এই লাইব্রেরি ভালোভাবেই কাজ করবে। তবে ফার্নিশড লুকের জন্য এটি প্রয়োজন। প্রোগ্রামের ছবিগুলোতে লক্ষ্য করুন, ক্লাস এবং ফাংশনগুলোর নাম কমলা রঙয়ে লেখা। এটা কিন্তু শুরু থেকেই এমন ছিল না। কি-ওয়ার্ড হাইলাইটিং এর জন্য, লাইব্রেরিটি যে ফোল্ডারে একটু আগেই সেইভ করা হল, সেই ফোল্ডারে keywords.txt(সব ছোট হাতের হতে হবে) নামক একটি টেক্সট ফাইল ক্রিয়েট করুন।

/wp:paragraph wp:image {“id”:56190}
/wp:image wp:paragraph

এবার টেক্সট ফাইলটিতে আমাদের তৈরী করা লাইব্রেরির ক্লাস এবং ফাংশনগুলোর নাম লিখুন। ক্লাসগুলোকে KEYWORD1 এবং ফাংশনগুলোকে KEYWORD2 হিসেবে ডিফাইন করতে হবে। ক্লাস/ফাংশনের নাম এবং KEYWORD1/2 এর মাঝখানে একটি ট্যাব দেওয়া প্রয়োজন।

/wp:paragraph wp:gallery {“ids”:[56189]} /wp:gallery wp:paragraph {“textColor”:”very-dark-gray”}

আমাদের লাইব্রেরি বানানো শেষ।

/wp:paragraph wp:paragraph {“textColor”:”vivid-green-cyan”}

পরবর্তী টিউটোরিয়ালে আমরা এই লাইব্রেরি ব্যবহার করেই একটি টারবিডিটি মিটার তৈরী করব।

/wp:paragraph ]]>

 

A. R
A. R

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.