সবাইকে আন্তরিক শুভেচ্ছা এবং স্বাগতম জানাচ্ছি “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” পূর্ণাঙ্গ চেইন কোর্সের এর ৬ষ্ঠ পর্বে। টেকটিউনস বিশ্বের সবচেয়ে বড় বাংলা সোশ্যাল নেটওয়ার্ক। এরকম একটা বড় প্লাটফর্মে “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” কোর্সটি টেকটিউনস কতৃপক্ষের প্রত্যক্ষ সহযোগিতায় শুরু করতে পেরে ভালো লাগছে।
“Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” কোর্সটির ঘোষণা টেকটিউনসসে প্রকাশ করার পর আপনাদের কাছ থেকে যে সাড়া পেয়েছি তা এই কোর্সটিকে সুন্দর করে পরিচালনা করতে সাহায্য করবে। সকলের সক্রিয় অংশগ্রহণ কামনা করছি।
আজ “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” পূর্ণাঙ্গ চেইন কোর্সের এর ৬ষ্ঠ পর্বে Arduino প্রোগ্রামিং এর বেসিক বিষয় সমূহ সম্পর্কে আলোচনা করা হবে।
Arduino এর জন্য লেখা যে কোন প্রগ্রামের দুইটা প্রধান ফাংশন থাকে
void setup(){ }
এবং
void loop() { }
পিনমুড নির্ধারণ, ভেরিয়েবল ইনিশিয়ালাইজ করা, লাইব্র্রেরি ব্যবহার করা ইত্যাদি কাজের জন্য void setup(){} ফাংশন ব্যবহার করা হয় । প্রতিবার Arduino বোর্ডে পাওয়ার সাপ্লাই দেয়অর পর অথবা প্রতিবার Arduino বোর্ডের রিসেট বাটন চাপার পর void setup(){} ফাংশনটি মাত্র একবারের জন্য কাজ করে।
void loop(){} ফাংশনটির মধ্যেই প্রয়োজনীয় সকল কোড সমূহ রাখা হয়। void loop(){} ফাংশনটির মধ্যেকার সকল প্রোগ্রাম বারবার রিসাইকেল হতে থাকে।
Arduino এর জন্য লেখা যে কোন প্রোগ্রামকে sketch বলে । আমরা একটা sketch দেখি ।
এই প্রোগ্রামের হার্ডওয়ার সেটাপ একনজরে দেখে নেয়া যাক।
উপরের হর্ডওয়্যারটিতে মোট তিনটা LED ব্যবহার করা হয়েছে। প্রত্যেকটা LED কে 100ohm রেজিস্টরের মাধ্যমে Arduino বোর্ডের ১১নং, ১২নং এবং ১৩ নং ডিজিটাল ইনপুট পিন সমূহে যুক্ত করা হয়েছে।
উপরের প্রোগ্রামটি Arduino বোর্ডে লোড করলে প্রতিটা LED পর্যায়ক্রমিকভাবে জ্বলানেভা করতে থাকবে।
int led1 = 13;
এর মাধ্যমে একটা ইন্টিজার টাইপ ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। সাধারণত কোন সংখ্যা বা ডাটা জমা রাখার জন্য ভেরিয়েবল ব্যবহার করা হয়। এখানে int হচ্ছে ভেরিয়েবলের ডাটা টাইপ, led1 ভেরিয়েবলের নাম । এবং 13 হচ্ছে ভেরিয়েবলের মান। অর্থাৎ প্রোগ্রামের মধ্যে কোথাও led1 ব্যবহার করলে তার মান 13 নির্দেশ করবে।
pinMode(led1, OUTPUT);
pinMode(); ফাংশন ব্যবহার করা হয় Arduino বোর্ডের বিশেষ কোন পিন কে ইনপুট হিসেবে ব্যবহার করা হবে না আউটপুট হিসেবে ব্যবহার করা হবে তা নির্দেশ করার জন্য।
pinMode(); ফাংশনের জন্য দুইটা অর্গুমেন্ট ব্যবহার করা হয়। একটা পিন নাম্বার নির্দেশ করে অন্যটা ঐ নাম্বারের পিনটা ইনপুট হবে না আউটপুট হবে তা নির্দেশ করে।
pinMode(led1, OUTPUT); এর মাধ্যমে led1 দ্বারা ১৩ নং পিনকে নির্দেশ করা হয়েছে আর OUTPUT দ্বারা বলা হয়েছে যে ১৩ নং পিনটি আউটপুট হিসেবে কাজ করবে।
আমরা যদি লেখি pinMode(9, INPUT); তাহলে ৯নং ডিজিটাল ইনপুট/আউটপুট পিনটি শুধুমাত্র ইনপুট হিসেবে কাজ করবে।
digitalWrite(led1, HIGH);
digitalWrite() ফাংশন ব্যবহার করা হয় কোন আউটপুট পিন কখন লজিক High আর কখন লজিক Low অবস্থায় থাকবে তা নির্ধারণ করার জন্য। এখানে কোন পিন লজিক High অবস্থায় আছে বলতে বোঝানো হচ্ছে ঐ পিনে পজিটিভ DC ভোল্টেজ আছে, এই পজিটিভ DC ভোল্টেজ এর মান সাধারণত +5v বা তার কিছু কম হয়ে থাকে। কোন পিন লজিক Low অবস্থায় আছে বলতে বোঝানো হচ্ছে ঐ পিনে 0v রয়েছে।
digitalWrite(led1, HIGH); এর শাধ্যমে led1অর্থাৎ ১৩ নং পিন লজিক High অবস্থায় থাকবে। এই অবস্থায় ১৩ নং পিনে কোন LED সংযুক্ত থাকলে তা জ্বলতে থাকবে।
digitalWrite(led1, LOW); এর শাধ্যমে led1অর্থাৎ ১৩ নং পিন লজিক Low অবস্থায় থাকবে। এই অবস্থায় ১৩ নং পিনে কোন LED সংযুক্ত থাকলে তা জ্বলবে না।
delay(1000);
delay(); ফাংশনটি ব্যবহার করে সময় বিরতি তৈরি করা হয়। এখানে আর্গুমেন্ট হিসেবে 1000 দেয়া হয়েছে এর অর্থ হচ্ছে 1000 মিলি সেকেন্ড বা ১ সেকেন্ড সময় বিরতি তৈরি করবে। আমরা যদি অর্ধ সেকেন্ড সময় বিরতি বা ডিলে তৈরি করতে চাই তাহলে লেখতে হবে। delay(500);
int led1 = 13; int led2 = 12; int led3 = 11; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop() { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(1000); digitalWrite(led2, HIGH); digitalWrite(led1, LOW); digitalWrite(led3, LOW); delay(1000); digitalWrite(led3, HIGH); digitalWrite(led2, LOW); digitalWrite(led1, LOW); delay(1000); }
প্রতিটা পর্বে কোর্সে সক্রিয় অংশগ্রহণকারীদের জন্য কিছু প্রশ্ন, প্রজেক্ট বা বিশেষ কিছু করণীয় থাকবে। এগুলো সম্পন্ন করে কোর্সে আপনার সক্রিয়তা নিশ্চিৎ করুন। এই কোর্সের সাথে সম্পৃক্ত বিচারক মন্ডলী এগুলো পর্যবেক্ষণ করবেন এবং প্রয়োজনীয় নির্দেশনা প্রদান করবেন। টেকটিউনস কতৃপক্ষের সহযোগিতায় মাঝে মাঝে কিছু পুরস্কারের ব্যবস্থাও থাকবে। Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন [পর্ব-০৬] এর জন্য কিছু সহজ প্রশ্ন থাকছে । আপনারা টিউমেন্ট করে প্রশ্ন গুলোর সঠিক উত্তর প্রদানের চেষ্টা করুন।
এই কোর্সটি আপনি সফলভাবে এবং সক্রিয় অংশগ্রহণের মাধ্যমে সমাপ্ত করে এই কোর্সের টেকটিউনস ভেরিফায়েড সার্টিফিকেট গ্রহণ করতে পারবেন। এজন্য অংশগ্রহণকারীদের জন্য প্রতি পর্বে যে যে সকল প্রশ্ন, প্রজেক্ট এবং করণীয় থাকবে তা সঠিকভাবে সম্পাদন করুন এবং কোর্স শেষে আপনাদেরকে টেকটিউনসসের নির্দেশনা অনুযায়ী এক বা একাধিক সিমুলেশন প্রজেক্ট সাবমিট করতে হবে। যেগুলো টেকটিউনসসস কতৃপক্ষ বিশ্লেষণ করে দেখবেন, এবং এর উপর ভিত্তি করে সার্টিফিকেট প্রদান করা হবে।
আমি অসীম কুমার পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 15 বছর 7 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 147 টি টিউন ও 469 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 17 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি অসীম কুমার পাল। ইলেকট্রনিক্স এবং ওয়েব ডিজাইনকে অন্তরে ধারণ করে পথ চলতেছি। স্বপ্ন দেখি এই পৃথিবীর বুকে একটা সুখের স্বর্গ রচনা করার। নিজেকে একজন অতি সাধারণ কিন্তু সুখী মানুষ ভাবতে পছন্দ করি।
1. ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট হবে delay(250) ;
2. 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(I/O, INPUT);
3. হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm