Arduino বিলম্ব ফাংশন, এবং কেন আপনি এটি ব্যবহার করা উচিত নয়

Arduino বিলম্ব ফাংশন, এবং কেন আপনি এটি ব্যবহার করা উচিত নয়

যখন আপনি প্রথম শুরু করেছিলেন কীভাবে বিকাশ করতে হয় তা শেখা জন্য আরডুইনো , আপনি সম্ভবত এমন একটি পণ্য তৈরি করেছেন যা এইরকম কিছুটা কাজ করে:





আপনার Arduino সংযুক্ত একটি একক LED আলো হবে। এটি প্রতি সেকেন্ড বা তারপরে বন্ধ এবং বন্ধ হবে এবং আরডুইনো বন্ধ না হওয়া পর্যন্ত চলবে। এটি 'হ্যালো ওয়ার্ল্ড' প্রোগ্রাম আরডুইনো , এবং নিখুঁতভাবে ব্যাখ্যা করে কিভাবে কোডের মাত্র কয়েকটি লাইন বাস্তব কিছু তৈরি করতে পারে।





আমি বাজি ধরতে ইচ্ছুক যে আপনি ব্যবহার করেছেন বিলম্ব () আলো চালু এবং বন্ধ করার মধ্যে অন্তর নির্ধারণ করতে ফাংশন। কিন্তু এখানে জিনিসটি হল: যখন আরডুইনো কীভাবে কাজ করে তার মৌলিক প্রদর্শনের জন্য বিলম্ব সহজ, আপনার প্রকৃত পৃথিবীতে এটি ব্যবহার করা উচিত নয়। এখানে কেন - এবং এর পরিবর্তে আপনার কী ব্যবহার করা উচিত।





কিভাবে বিলম্ব () কাজ করে

উপায় বিলম্ব () ফাংশন কাজ বেশ সহজ। এটি একটি একক পূর্ণসংখ্যা (বা সংখ্যা) যুক্তি গ্রহণ করে। এই সংখ্যাটি সময়ের প্রতিনিধিত্ব করে (মিলিসেকেন্ডে পরিমাপ করা হয়) প্রোগ্রামের পরবর্তী লাইনের কোডে না যাওয়া পর্যন্ত অপেক্ষা করা উচিত।

কিন্তু সমস্যা হল, বিলম্ব () ফাংশন আপনার প্রোগ্রামকে অপেক্ষা করার একটি ভাল উপায় নয়, কারণ এটি একটি 'ব্লকিং' ফাংশন হিসাবে পরিচিত।



কোন খাদ্য বিতরণ পরিষেবা সবচেয়ে ভাল প্রদান করে

ব্লকিং এবং নন-ব্লকিং ফাংশনের মধ্যে পার্থক্য

ব্লকিং ফাংশন কেন খারাপ তা বোঝানোর জন্য, আমি চাই আপনি রান্নাঘরে দুটি ভিন্ন শেফ কল্পনা করুন: হেনরি ব্লকিং , এবং এডুয়ার্ডো ননব্লকিং । দুজনেই একই কাজ করে, কিন্তু বন্যভাবে ভিন্ন উপায়ে।

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





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

এটি একটি নির্বোধ উপমা, কিন্তু এটি বিন্দুকে ব্যাখ্যা করে।





ব্লক করা ফাংশন একটি প্রোগ্রামকে অন্য কিছু করতে বাধা দেয় যতক্ষণ না সেই নির্দিষ্ট কাজটি সম্পন্ন হয়। আপনি যদি একাধিক চান কর্ম একই সময়ে ঘটতে, আপনি কেবল ব্যবহার করতে পারবেন না বিলম্ব ()

বিশেষ করে, যদি আপনার আবেদনের জন্য আপনাকে সংযুক্ত সেন্সর থেকে ক্রমাগত ডেটা অর্জন করতে হয়, তাহলে আপনাকে এটি ব্যবহার করা থেকে বিরত থাকতে হবে বিলম্ব () ফাংশন, এটি একেবারে বিরতি দেয় সবকিছু

ভাগ্যক্রমে, বিলম্ব () আরডুইনো কোডিং করার সময় আপনার প্রোগ্রামকে অপেক্ষা করার একমাত্র উপায় নয়।

মিলিসের সাথে দেখা করুন ()

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

কারণ সামান্য সাধারণ গণিত ব্যবহার করে, আপনি সহজেই আপনার কর্মসূচির 'সময়' দিকগুলি কীভাবে কাজ করে তা প্রভাবিত না করেই করতে পারেন। মিলিস () কিভাবে কাজ করে তার একটি মৌলিক প্রদর্শনী নিম্নরূপ। আপনি দেখতে পাবেন, প্রোগ্রামটি 1000 মিলিসেকেন্ড (এক সেকেন্ড) এর জন্য LED আলো চালু করবে, এবং তারপর এটি বন্ধ করে দেবে। কিন্তু গুরুত্বপূর্ণভাবে, এটি এমনভাবে করে যা অবরোধহীন।

এখন আসুন দেখি কিভাবে এটি Arduino এর সাথে কাজ করে।

এই প্রোগ্রাম - যা ব্যাপকভাবে ভিত্তিক অফিসিয়াল Arduino ডকুমেন্টেশন থেকে একটি - বর্তমান সময় থেকে আগের রেকর্ডকৃত সময় বিয়োগ করে কাজ করে। যদি অবশিষ্ট (অর্থাৎ শেষ সময় রেকর্ড করার সময় থেকে অতিবাহিত সময়) ব্যবধানের চেয়ে বেশি হয় (এই ক্ষেত্রে, 1000 মিলিসেকেন্ড), প্রোগ্রামটি আপডেট করে প্রাক্কাল বর্তমান সময়ে পরিবর্তনশীল, এবং হয় LED চালু বা বন্ধ করে।

কিভাবে ফটোশপে একটি নির্দিষ্ট রং নির্বাচন করবেন

এবং যেহেতু এটি একটি ব্লকিং নয়, যেকোনো কোড যা প্রথমে এর বাইরে অবস্থিত যদি বিবৃতি স্বাভাবিকভাবে কাজ করা উচিত।

সহজ, তাই না? লক্ষ্য করুন কিভাবে আমরা ভেরিয়েবল তৈরি করেছি বর্তমান সময় একটি হিসাবে স্বাক্ষরবিহীন দীর্ঘ একটি স্বাক্ষরবিহীন মান সহজভাবে বোঝায় যে এটি কখনও নেতিবাচক হতে পারে না; আমরা এটি করি যাতে আমরা যত বেশি সংখ্যক সঞ্চয় করতে পারি তা বড় হয়। ডিফল্টরূপে, সংখ্যা ভেরিয়েবল স্বাক্ষরিত হয়, যার মানে সেই ভেরিয়েবলের জন্য একটি 'বিট' মেমরি ব্যবহার করা হয় যাতে মানটি ইতিবাচক বা নেতিবাচক হয়। এটি শুধুমাত্র ইতিবাচক হবে তা উল্লেখ করে, আমাদের সাথে খেলতে একটি অতিরিক্ত বিট আছে।

বাধা দেয়

এখন পর্যন্ত, আমরা আমাদের Arduino প্রোগ্রামে সময়মতো পৌঁছানোর একটি উপায় সম্পর্কে শিখেছি যা এর চেয়ে ভাল বিলম্ব () । কিন্তু আরেকটি, আরও ভাল উপায়, কিন্তু আরো জটিল: বাধা দেয় । এগুলি আপনাকে আপনার আরডুইনো প্রোগ্রামের সঠিক সময় দেওয়ার অনুমতি দেয় এবং একটি বাহ্যিক ইনপুটকে দ্রুত সাড়া দেয়, কিন্তু অসিঙ্ক্রোনাস পদ্ধতি

এর মানে হল যে এটি আপনার প্রোগ্রামের প্রবাহকে বাধাগ্রস্ত না করে, মূল প্রোগ্রামের সাথে একত্রে চলতে থাকে, ক্রমাগত একটি ইভেন্ট হওয়ার জন্য অপেক্ষা করে। এটি আপনাকে Arduino প্রসেসরের কার্যকারিতা প্রভাবিত না করে ইভেন্টগুলিতে দক্ষতার সাথে সাড়া দিতে সাহায্য করে।

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

আরডুইনোকে শক্তিশালী করা AVR চিপ শুধুমাত্র হার্ডওয়্যার ইন্টারাপ্ট সমর্থন করে। এগুলি ঘটে যখন একটি ইনপুট পিন উচ্চ থেকে নীচে যায়, বা যখন আরডুইনো এর অন্তর্নির্মিত টাইমার দ্বারা ট্রিগার হয়।

এটা গুপ্ত শব্দ। বিভ্রান্তিকর, এমনকি। কিন্তু তা নয়। তারা কিভাবে কাজ করে তা দেখতে, এবং বাস্তব জগতে তাদের ব্যবহারের কিছু উদাহরণ দেখুন, Arduino ডকুমেন্টেশন আঘাত

ব্লক হয়ে যাবেন না

ব্যবহার মিলিস () ব্যবহারের সাথে তুলনা করলে অবশ্যই কিছুটা অতিরিক্ত কাজ লাগে বিলম্ব () । তবে আমাকে বিশ্বাস করুন, আপনার প্রোগ্রামগুলি এর জন্য আপনাকে ধন্যবাদ জানাবে এবং আপনি এটি ছাড়া আরডুইনোতে মাল্টিটাস্কিং করতে পারবেন না।

আপনি যদি একটি উদাহরণ দেখতে চান মিলিস () একটি বাস্তব বিশ্বের Arduino প্রকল্পে ব্যবহৃত, জেমস ব্রুস এর Arduino নাইট লাইট এবং সূর্যোদয় এলার্ম দেখুন।

অন্য কোন ব্লকিং ফাংশন পাওয়া আমাদের সতর্ক হওয়া উচিত? নীচের মন্তব্যে আমাকে জানান, এবং আমরা চ্যাট করব।

ছবির ক্রেডিট: আরডুইনো (ড্যানিয়েল স্পাইস) , প্রধান (অলি Svenson)

শেয়ার করুন শেয়ার করুন টুইট ইমেইল এটি কি উইন্ডোজ 11 এ আপগ্রেড করার যোগ্য?

উইন্ডোজ নতুন করে ডিজাইন করা হয়েছে। কিন্তু এটা কি আপনাকে উইন্ডোজ 10 থেকে উইন্ডোজ 11 এ স্থানান্তরিত করার জন্য যথেষ্ট?

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • DIY
  • প্রোগ্রামিং
  • আরডুইনো
লেখক সম্পর্কে ম্যাথিউ হিউজ(386 নিবন্ধ প্রকাশিত)

ম্যাথিউ হিউজস ইংল্যান্ডের লিভারপুলের একজন সফটওয়্যার ডেভেলপার এবং লেখক। তিনি খুব কমই তার হাতে এক কাপ শক্তিশালী ব্ল্যাক কফি ছাড়া পাওয়া যায় এবং একেবারে তার ম্যাকবুক প্রো এবং তার ক্যামেরা পছন্দ করে। আপনি তার ব্লগটি http://www.matthewhughes.co.uk এ পড়তে পারেন এবং ittermatthewhughes এ তাকে টুইটারে অনুসরণ করতে পারেন।

অন্যরা কি স্ন্যাপচ্যাটের স্মৃতি দেখতে পারে?
ম্যাথিউ হিউজের থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন
বিভাগ Diy