ADs by Techtunes ADs
ADs by Techtunes ADs

Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন [পর্ব-০৬] :: Arduino প্রোগ্রামিং বেসিক

Arduino শিখুন প্রজেক্ট তৈরি করুন

সবাইকে আন্তরিক শুভেচ্ছা এবং স্বাগতম জানাচ্ছি “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” পূর্ণাঙ্গ চেইন কোর্সের এর ৬ষ্ঠ পর্বে। টেকটিউনস বিশ্বের সবচেয়ে বড় বাংলা সোশ্যাল নেটওয়ার্ক। এরকম একটা বড় প্লাটফর্মে “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” কোর্সটি টেকটিউনস কতৃপক্ষের প্রত্যক্ষ সহযোগিতায় শুরু করতে পেরে ভালো লাগছে।

ADs by Techtunes ADs

“Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” কোর্সটির ঘোষণা টেকটিউনসসে প্রকাশ করার পর আপনাদের কাছ থেকে যে সাড়া পেয়েছি তা এই কোর্সটিকে সুন্দর করে পরিচালনা করতে সাহায্য করবে। সকলের সক্রিয় অংশগ্রহণ কামনা করছি।

আজ “Arduino শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন” পূর্ণাঙ্গ চেইন কোর্সের এর ৬ষ্ঠ পর্বে Arduino প্রোগ্রামিং এর বেসিক বিষয় সমূহ সম্পর্কে  আলোচনা করা হবে।

Arduino প্রোগ্রামিং বেসিক

Arduino এর জন্য লেখা যে কোন প্রগ্রামের দুইটা প্রধান ফাংশন থাকে

void setup(){

}

এবং

void loop() {

}

পিনমুড নির্ধারণ, ভেরিয়েবল ইনিশিয়ালাইজ করা, লাইব্র্রেরি ব্যবহার করা ইত্যাদি কাজের জন্য void setup(){} ফাংশন ব্যবহার করা হয় । প্রতিবার Arduino বোর্ডে পাওয়ার সাপ্লাই দেয়অর পর অথবা প্রতিবার Arduino বোর্ডের রিসেট বাটন চাপার পর void setup(){} ফাংশনটি মাত্র একবারের জন্য কাজ করে।

void loop(){} ফাংশনটির মধ্যেই প্রয়োজনীয় সকল কোড সমূহ রাখা হয়। void loop(){} ফাংশনটির মধ্যেকার সকল প্রোগ্রাম বারবার রিসাইকেল হতে থাকে।

Arduino এর জন্য লেখা যে কোন প্রোগ্রামকে sketch বলে । আমরা একটা sketch দেখি ।

 

ADs by Techtunes ADs

এই প্রোগ্রামের হার্ডওয়ার সেটাপ একনজরে দেখে নেয়া যাক।

 

উপরের হর্ডওয়্যারটিতে মোট তিনটা 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 রয়েছে।

ADs by Techtunes ADs

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 শিখুন এক্সক্লুসিভ প্রজেক্ট তৈরি করুন [পর্ব-০৬] এর জন্য কিছু সহজ প্রশ্ন থাকছে । আপনারা টিউমেন্ট করে প্রশ্ন গুলোর সঠিক উত্তর প্রদানের চেষ্টা করুন।

  • প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট কি হবে?
  • প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট কি হবে?
  • হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?

কোর্স শেষে পাবেন টেকটিউনসসস ভেরিফায়েড সার্টিফিকেট!

এই কোর্সটি আপনি সফলভাবে এবং সক্রিয় অংশগ্রহণের মাধ্যমে সমাপ্ত করে এই কোর্সের টেকটিউনস ভেরিফায়েড সার্টিফিকেট গ্রহণ করতে পারবেন। এজন্য অংশগ্রহণকারীদের জন্য প্রতি পর্বে যে যে সকল প্রশ্ন, প্রজেক্ট এবং করণীয় থাকবে তা সঠিকভাবে সম্পাদন করুন এবং কোর্স শেষে আপনাদেরকে টেকটিউনসসের নির্দেশনা অনুযায়ী এক বা একাধিক সিমুলেশন প্রজেক্ট সাবমিট করতে হবে। যেগুলো টেকটিউনসসস কতৃপক্ষ বিশ্লেষণ করে দেখবেন, এবং এর উপর ভিত্তি করে সার্টিফিকেট প্রদান করা হবে।

ADs by Techtunes ADs
Level 0

আমি অসীম কুমার পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 10 বছর 3 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 147 টি টিউন ও 473 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 16 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

আমি অসীম কুমার পাল। ইলেকট্রনিক্স এবং ওয়েব ডিজাইনকে অন্তরে ধারণ করে পথ চলতেছি। স্বপ্ন দেখি এই পৃথিবীর বুকে একটা সুখের স্বর্গ রচনা করার। নিজেকে একজন অতি সাধারণ কিন্তু সুখী মানুষ ভাবতে পছন্দ করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

1. ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট হবে delay(250) ;

2. 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(I/O, INPUT);

3. হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm

    Level 0

    @j0k3r: @j0k3r: দুঃখিত ২ এর উত্তর ভুল দিয়েছি।

    2. 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT);

      @j0k3r: ধন্যবাদ ভাই, কোর্সে সক্রিয়ভাবে অংশ গ্রহণ করার জন্য।শুভকামনা রইলো।

Level 0

“যদি অর্ধ সেকেন্ড সময় বিরতি বা ডিলে তৈরি করতে চাই তাহলে লেখতে হবে। delay(5000); ” এখানে কি ঠিক লিখেছেন নাকি delay(500); হবে?

    @j0k3r: অনাকাংক্ষিত ভুলের জন্য দুঃখিত। টিউনটি আপডেট করা হয়েছে।

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট কি হবে?

উত্তরঃ ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট হবে delay(250);

প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট কি হবে?

উত্তরঃ 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT);

হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?

We need to use 100 ohms resistor because the board is supplying 5 volt (as it is connected to USB port). 3 volt is sufficient for each LED and the remaining 2 volt should be dissipated or blocked, otherwise the LED will be destroyed. Each LED is taking .02 ampere current and by using Ohm’s law the calculation should be like this:

R= V/I;
R= 2/.02;
= 100 ohms

N.B: I am so sorry, i am not good in typing Bangla. I am trying to learn but in long typing it poses great difficulty for me.

    @jhorapalok: ধন্যবাদ ভাই। রেজিস্টরের মান সম্পর্কিত আপনার বিশ্লেষণ অনেক সুন্দর হয়েছে।

Level 0

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির
জন্য স্টেটমেন্ট কি হবে?
উত্তর : ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য
স্টেটমেন্ট হবে delay(250) ;।

প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট
হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট
কি হবে?
উত্তর : 10 নং ডিজিটাল I/O পিনকে ইনপুট
হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT);।

প্রশ্ন ৩:হার্ডওয়ার সেটাপ বা সার্কিট
ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?
উত্তর : হার্ডওয়ার সেটাপ বা সার্কিট
ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm।

Level 0

উত্তর ১: delay(250);

উত্তর ২: pinmode(10, INPUT);

উত্তর ৩: 100 ohm

একটা প্রশ্নঃ কোডিংয়ের শুরুতে কেন লিখেছে বা কেন লিখতে হবে একটু বলবেন কি?

ভালথাকবেন, পরবর্তি টিউনের অপেক্ষায় রইলাম – ধন্যবাদ

Level 0

দুঃখিত ভাইয়া প্রশ্নটা ছিল কেন লিখেছেন বা কেন লিখতে হবে?

Level 0

আমাকে মাফ করবেন। আমি ঠিক লিখতে পারছিনা engle bracket /pre engle bracket

    @jimad: ধন্যবাদ ভাই। শুভ কামনা রইলো। টা অনাকাংখিতভাবে যুক্ত হয়েছিলো। আপডেট করা হয়েছে।

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট কি হবে?
উত্তর : ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্যস্টেটমেন্ট হবে delay(250)

প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট কি হবে?
উত্তরঃ 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT)

হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?
উত্তর : হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm

উত্তর ১: delay(250),
উত্তর ২: pinMode(10, INPUT),
উত্তর ৩: 100 ohm ।

আপনার টিউনের জন্য তীর্থের কাকের মত অপেক্ষা করে থাকি । 🙂

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট কি হবে?
উত্তর: delay(1000);
প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট কি হবে?
উত্তর: pinMode(led1, INPUT);
হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?
উত্তর: 100Ω

প্রশ্ন ১: delay(1000);
প্রশ্ন ২: pinMode(10, INPUT);
প্রশ্ন ৩:100Ω

    @TYMO BDCyclists: কোর্সে সক্রিয়ভাবে অংশ গ্রহণের জন্য আপনাকে ধন্যবাদ, শুভ কামনা রইলো।

Level 0

উত্তর:
1. 250 মিলি.সেকেন্ড ডিলে দেওয়ার স্টেটমেন্ট হবে;

delay(250);

2. 10 নং পিনকে ইনপুট হিসাবে ব্যবহারের স্টেটমেন্ট হবে
pinMode(10, INPUT);

3. হার্ডওয়্যার সেটআপের জন্য প্রতিটি রেজিস্টর এর মান 100 ওহম।

    @shariful: কোর্সে সক্রিয়ভাবে অংশ গ্রহণের জন্য আপনাকে ধন্যবাদ, শুভ কামনা রইলো।

Level 0

উত্তর ১: delay(250);
উত্তর ২: pinMode(10, INPUT);
উত্তর ৩: 100 ohms.

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট কি হবে?
উত্তর: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য স্টেটমেন্ট হবে delay(250);
প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট কি হবে?
উত্তর: 10 নং ডিজিটাল I/O পিনকে ইনপুট হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT);
প্রশ্ন ৩: হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?
উত্তর: হার্ডওয়ার সেটাপ বা সার্কিট ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm

প্রশ্ন ১: ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির
জন্য স্টেটমেন্ট কি হবে?
উত্তর : ২৫০মিলি সেকেন্ড সময় বিরতি তৈরির জন্য
স্টেটমেন্ট হবে delay(250) ;।

প্রশ্ন ২: 10 নং ডিজিটাল I/O পিনকে ইনপুট
হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট
কি হবে?
উত্তর : 10 নং ডিজিটাল I/O পিনকে ইনপুট
হিসেবে নির্ধারণ করার জন্য স্টেটমেন্ট হবে pinMode(10, INPUT);।

প্রশ্ন ৩:হার্ডওয়ার সেটাপ বা সার্কিট
ডায়াগ্রামে প্রতিটা রেজিস্টরের মান কত?
উত্তর : হার্ডওয়ার সেটাপ বা সার্কিট
ডায়াগ্রামে প্রতিটা রেজিস্টরের মান 100 ohm।

এবারও mizbah সাহেবকে কৃতজ্ঞতা জানাই তার নিকট থেকে copy করে নিয়েছি বলে।

Arduino কিনে ‍আনার পর সারা রাত ঘুমাতে পারিনি।ভয়, উত্তেজনা সব কিছু অনেক চাপে রেখেছিল।

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

তখন মনে পড়লো 13 নং তো জ্বলছেই । তাহলে কি সমস্যা হতে পারে।

আরডুইনো নষ্ট করে ফেললাম নাতো ? 🙁 🙁 🙁

হঠাৎ মনে হলো ভোল্টেজ মেপে দেখি। দেখলাম ভোল্টেজ ঠিক ‍আছে। এবার এলইডি চেক করে খুজেপেলাম সমস্যা। তিনি নষ্ট হয়ে আছেন। তথন অন্য একটা এলইডি লাগিয়ে কয়েকবার প্রো্গ্রাম কোড পরিবর্তচেন করে করে চেক করলাম। সব ঠিক আছে । মনে শান্তি পেলাম । ততক্ষণ ভোর ৬.০০ টা । সকাল ১০.০০ টায় অফিস ।

আসলে এই সম্পর্কে কোন ব্যবহারিক ধারণাই ছিল না তো; তাই প্রতিটা কাজেই ‍আমার অনেক সময় লেগেছে।

যাই হোক আমি কৃতজ্ঞতা জানাই টেকটিউনস এর সকলকে। বিশেষ করে Ashim Kumar দাদাকে। যিনি এত সুন্দর করে সব কিছুর ব্যখ্যা করেছন।

Buy Arduino, shield, module, sensor and other electronics parts visit http://www.electronicsbuy.net