মাইক্রোকন্ট্রোলার গুরু [পর্ব-১১] ::AVR মাইক্রোকন্ট্রোলার বেসিক (পর্ব-২) || এই কোর্সে সক্রিয়ভাবে অংশ গ্রহণ করুন আর হয়ে যান, একজন মাইক্রোকন্ট্রোলার গুরু

মাইক্রোকন্ট্রোলার গুরু

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

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

কিভাবে একটা বেসিক বেসিক প্রোগ্রাম লেখা যায়

গতপর্বে আমরা দেখেছিলাম কিভাবে একটা নতুন প্রোজেক্ট ওপেন করতে হয়। গতপর্বের দিক নির্দেশনা অনুসরণ করে একটা নতুন প্রোজেক্ট ওপেন করুন। ওপেন করার সময় Device হিসেবে atmega8 নির্বাচন করুন।

তাহলে নিচের ছবির মতো একটা  কোড উইন্ডো পাবেন।

নিচের  কোডটুকু লিখুন


#include <avr/io.h>
#include <util/delay.h>                // for _delay_ms()

int main(void)
{
DDRB = 255;                       // initialize port B
while(1)
{

PORTB = 0b11111111;            //Al the pins of PORTB will be high
_delay_ms(3000);                // wait 3000 milliseconds

PORTB = 0b00000000;                //Al the pins of PORTB will be low
_delay_ms(3000);                // wait 3000 milliseconds

}
}

Build মেনু থেকে Build Solution এ ক্লিক করুন। তাহলে কম্পাইল হয়ে .hex ফাইল তৈরি হবে।

.hex ফাইলটি পাওয়া যাবে C:\Users\my\Documents\AVRStudio 5.1\avrtutorial2\avrtutorial2\Debug এর অনুরূপ লোকেশনে

এই .hex ফাইলটি আমরা মাইক্রোকন্ট্রোলারে লোড করবো।

কিভাবে PROTEUS এ সিমুলেশন হার্ডওয়্যার ডিজাইন করবেন, দেখে নিন

PROTEUS ISIS ওপেন করে নিচের ছবির মতো Pick from Libraries এ ক্লিক করুন।

নিচের ছবির নির্দেশনা অনুসরণ করুন। keywords এ atmega8 লিখে সার্চ করুন, এরপর নির্বাচন করুন, সবশেষে ok বাটনে ক্লিক করুন।

মাউস পয়েন্টারটি পেনসিলের আকার ধারণ করবে। একটা ক্লিক করে atmega8 ডিজাইন উইন্ডোতে নিয়ে আসুন।

এখন মাইক্রোকন্ট্রোলারটির উপর ডাবল ক্লিক করে .hex ফাইলটির লোকেশন দেখিয়ে দিন।

Play বাটনে ক্লিক করুন। নিচের ছবি অনুসরণ করুন।

তাহলে আমাদের লেখা কোডটি রান হবে।

উপরের এনিমেশনটিতে আমরা দেখতে পাচ্ছি বামদিকের PB0 থেকে PB7 পর্যন্ত যে পিন সমূহ রয়েছে একবার লজিক হাই হচ্ছে এরপর তিন সেকেন্ড অপেক্ষা করছে , তারপর লজিক লো হয়ে তিন সেকেন্ড অপেক্ষা করছে।

প্রোগ্রাম পর্যালোচনা


#include <avr/io.h>
#include <util/delay.h>                // for _delay_ms()

int main(void)
{
DDRB = 255;                       // initialize port B
while(1)
{

PORTB = 0b11111111;            //Al the pins of PORTB will be high
_delay_ms(3000);                // wait 3000 milliseconds

PORTB = 0b00000000;                //Al the pins of PORTB will be low
_delay_ms(3000);                // wait 3000 milliseconds

}
}

#include <avr/io.h> এর মাধ্যমে একটা লাইব্রেরী ফাইলকে কল করা হয়েছে,যা মাইক্রোকন্ট্রোলারের ইনপুট আউটপুট পোর্ট ব্যবহার করে কাজ করার জন্য প্রোগ্রামে ব্যবহৃত হয়।
#include <util/delay.h>  এর মাধ্যমে একটা লাইব্রেরী ফাইলকে কল করা হয়েছে,যা _delay_ms() ফাংশনের মাধ্যমে সময় বিরতি তৈরি করতে প্রোগ্রামে ব্যবহৃত হয়।
int main(void){} আমরা যেহেতু প্রোগ্রামিং সি ব্যবহার করে প্রোগ্রাম লিখেছি, তাই গতানুগতিকভাবে সি ব্যবহার করে প্রোগ্রাম লেখার ক্ষেত্রে সকল কোডকে main() ফাংশনের অন্তর্ভূক্ত করে রাখতে হয়। আমরাও তাই করেছি।

DDRB = 255; এখানে DDRB হচ্ছে  B পোর্টের জন্য ডাটা ডাইরেকশন রেজিস্টার। DDRB একটা ৮ বিট রেজিস্টার । DDRB রেজিস্টারের  ভ্যালু হিসেবে 255 দেয়া হয়েছে অর্থাৎ বাইনারীতে 1111 1111 এই অবস্থায় পোর্ট B এর সবগুলো পিন আউটপুট হিসেবে কাজ করবে। যদি পোর্ট B এর কিছু কিছু পিন ইনপুট হিসেবে ব্যবহার করতে হয় তাহলে ঐ সকল স্থানে 0 লেখতে হবে, যেমন 1111 0000 এ ক্ষেত্রে PA0 থেকে PA3 পর্যন্ত পিন সমূহ ইনপুট হিসেবে কাজ করবে আর PA4 থেকে PA7 পর্যন্ত পিন সমূহ আউটপুট হিসেবে কাজ করবে।
while(1){} এর মাধ্যমে একটা অসীম লুপ তৈরি করা হয়েছে, যার কন্ডিশনে 1 দেয়া আছে অর্থাৎ এই লুপের কন্ডিশন যতক্ষণ আমাদের মাইক্রোকন্ট্রোলার কাজ করবে ততক্ষণ সত্য থাকবে এবং এই লুপের মধ্যে যা লেখা থাকবে তা বারবার রি-সাইকেল হবে।

PORTB = 0b11111111;   PORTB, B পোর্টের জন্য ব্যবহৃত একটা রেজিস্টার যা  ঐ পোর্টের আউটপুট অবস্থা নির্দেশ করে। PORTB = 0b11111111 দিলে PORTB এর সবগুলো পিন লজিক হাই হবে, এবং পিন সমূহে LED যুক্ত করলে জ্বলতে থাকবে।

PORTB = 0b00000000;  এর মাধ্যমে PORTB এর সবগুলো পিন লজিক লো হবে

_delay_ms(3000);  এর মাধ্যমে ৩ সেকেন্ড টাইম ডিলে তৈরি করা হয়েছে।

কোর্সে সক্রিয় অংশগ্রহণকারীদের জন্য কিছু করণীয়

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

মাইক্রোকন্ট্রোলার গুরু [পর্ব-১০] ::AVR মাইক্রোকন্ট্রোলার বেসিক (পর্ব-১) এর জন্য কিছু সহজ প্রশ্ন থাকছে । আপনারা টিউমেন্ট করে প্রশ্ন গুলোর সঠিক উত্তর প্রদানের চেষ্টা করুন।

  • প্রশ্ন ১: প্রোগ্রামটি কোন AVR মাইক্রোকন্ট্রোলার এর জন্য লেখা হয়েছে ?
  • প্রশ্ন ২: DDRB কি  ?
  • প্রশ্ন ৩: _delay_ms(5000);  ব্যবহার করলে কত সেকেন্ড সময় বিরতি তৈরি হবে?

কোর্সের কোন পার্ট সম্পর্কে বা প্রোগ্রাম সম্পর্কে কোন বিষয় আমাকে জানানোর জন্য টিউমেন্ট করতে পারেন এর পাশাপাশি আমাকে ফেসবুকে ম্যাসেজ দিতে পারেন।

মাইক্রোকন্ট্রোলারের উপর ধারাবাহিক চেইন কোর্স "মাইক্রোকন্ট্রোলার গুরু" কোর্সে সক্রিয়ভাবে অংশ গ্রহণ করুন আর হয়ে যান, একজন মাইক্রোকন্ট্রোলার গুরু। টেকটিউনস কাপনাকে প্রয়োজনীয় সহযোগিতা প্রদান করবে , শুধুমাত্র আপনার ইচ্ছা আর সক্রিয় অংশগ্রহণই আপনাকে এ বিষয়ে অভিজ্ঞ করে তুলবে, আর সবাই আপনাকে দেখে বলবে মাইক্রোকন্ট্রোলার গুরু । তাহলে মাইক্রোকন্ট্রোলার গুরু হওয়ার জন্য আপনি প্রস্তুত তো!

আজ এ পর্যন্তই। সবাইকে ধন্যবাদ । শুভকামনা রইলো।

Level 2

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

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


টিউনস


আরও টিউনস


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


টিউমেন্টস

অসীম কুমার পালঃ ভাই আমার একটা যদি প্রোগ্রাম তৈরি করে দিতেন খুবই উপকার হত।atmel১৬/৩২.Time Based Control or Auto funcating AC Light/Fan using relay.প্রোগ্রাম আর .hex ফাইল টা করে দিলে হবে র শুদু প্রোগ্রাম দিলেও হবে ।
email:[email protected]

Level 0

ভাই আপনাকে ধন্যবাদ.
LED Matrix Moving Display নিয়ে টিউন করেন Please…….

1: atmega8 2: DDRB ৮ বিট রেজিস্টার 3: 5 সেকেন্ড

মাইক্রোকন্ট্রোলার নিয়ে আর পোষ্ট করবেন না ভাইয়া???

প্রিয় টিউনার,

আপনাকে এই চেইনটি চলমান করার জন্য অনুরোধ করা গেল। দয়া করে আপনার চেইন টিউনটি নতুন পর্ব যুক্ত করুন এবং নিয়মিত আপডেট করুন। ধন্যবাদ।

AVR বেসিক (পর্ব-3) রিলিজ করবেন না>>>>