বেসিক আরডুইনো প্রোগ্রামিং শেখা - নতুনদের জন্য টিউটোরিয়াল

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





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

ভূমিকা

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



একটি মাইক্রোকন্ট্রোলার ব্যবহারকারীর পক্ষে এতটাই দরকারী হয়ে ওঠে যেহেতু এটি একটি বিল্ট-ইন প্রসেসর, মেমরি এবং ইনপুট / আউটপুট পোর্টগুলি (জিপিআইও বা সাধারণ উদ্দেশ্যে ইনপুট / আউটপুট পিনও বলে) প্রস্তাব দেয় যা আমরা কোনও পছন্দসই বৈশিষ্ট্য অনুসারে ব্যবহারকারী দ্বারা নিয়ন্ত্রিত হতে পারি।

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



এখন আসুন দ্রুত সরানো এবং কীভাবে একটি আরডুইনো প্রোগ্রামিং শুরু করা যায় তা শিখি।

1.2 সফ্টওয়্যার ইনস্টল করা (উইন্ডোজ)

এর জন্য আপনার ইন্টারনেট অ্যাক্সেসের প্রয়োজন হবে যা স্পষ্টতই আপনি আপনার কম্পিউটারে নিয়ে যাবেন। দয়া করে নীচের লিঙ্কে যান এবং আইডিই সফ্টওয়্যারটি ডাউনলোড করুন:

নন অ্যাডমিন ইনস্টল করার জন্য উইন্ডোজ জিপ ফাইল

ডাউনলোডের পরে আপনি ডাউনলোড ফোল্ডারে আরডুইনো সেটআপ আইকনটি দেখতে পাবেন যা দেখতে এটির মতো দেখাচ্ছে:

আরডুইনো ডাউনলোড আইকন

আপনি এটি পেয়ে গেলে, আপনি কেবল এটির উপর ডাবল ক্লিক করতে পারেন এবং আপনার কম্পিউটারে আরডুইনো ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (আইডিই) ইনস্টল করতে পারেন। সম্পূর্ণ প্রক্রিয়াটি নিম্নলিখিত ভিডিওতে দৃশ্যমান করা যেতে পারে:

https://youtu.be/x7AMn1paCeU

1.4 আমাদের প্রথম সার্কিট দিয়ে শুরু করা

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

যেমনটি আমরা জানি যে একটি এলইডি হ'ল একটি হালকা নির্গমনকারী ডায়োড যা একটি মেরুতা থাকে এবং এটি সঠিক সরবরাহের খুঁটির সাথে সংযুক্ত না হলে আলোকিত করবে না।

এলইডি সহ অন্য দিকটি হ'ল এই ডিভাইসগুলি কম স্রোতের সাথে কাজ করে এবং তত্ক্ষণাত ক্ষতিগ্রস্থ হতে পারে যদি উপযুক্ত গণনা করা প্রতিরোধক এর একটি পিনের সাথে সিরিজে অন্তর্ভুক্ত না করা হয়।

থাম্বের নিয়ম হিসাবে, সরবরাহকে প্রয়োজনীয় সুরক্ষিত স্তরে সীমাবদ্ধ করতে সরবরাহ ইনপুটে প্রতি 5 ভি বৃদ্ধির জন্য 330 ওহম 1/4 ওয়াট বেশ আদর্শ। অতএব 5 ভি এর জন্য এটি 330 ওহম হতে পারে, 10 ভি এর জন্য এটি 680 ওহম এবং আরও কিছু হতে পারে।

সমাবেশের জন্য ব্রেডবোর্ড ব্যবহার করা

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

বেসিক LED সংযোগ সেটআপটি নীচে প্রত্যক্ষ করা যেতে পারে:

আরডুইনো সহ এলইডি

আপনি উপরে 3 বেসিক উপাদান দেখতে পারেন:

  1. একটি 5 মিমি, 20 এমএ এলইডি
  2. একটি 330 ওহম 1/4 ওয়াট প্রতিরোধক
  3. একটি আরডুইনো বোর্ড

ডায়াগ্রাম অনুযায়ী কেবল সিস্টেমটি একত্র করুন।

এরপরে, কম্পিউটার ইউএসবি থেকে আরডুইনোতে 5 ভি প্লাগ করুন। এটি করার সাথে সাথে আপনি দেখতে পাবেন LED আলোকসজ্জা আপ।

আমি জানি এটি বেশ বেসিক, তবে স্ক্র্যাচ থেকে শুরু করা সবসময় ভাল। আশ্বাস দেওয়া জিনিসগুলি আরও এগিয়ে যাওয়ার সাথে সাথে আরও আকর্ষণীয় হওয়া শুরু হবে।

1.5 আরডুইনো সহ এলইডি কন্ট্রোলিং

এখন আমরা শিখব কীভাবে একটি আরডুইনো প্রোগ্রাম সহ একটি এলইডি নিয়ন্ত্রণ করতে হয়।

একটি প্রোগ্রাম লিখতে আমাদের প্রতিটি প্রোগ্রামে কমপক্ষে 2 টি ফাংশন থাকতে হবে।

একটি ফাংশন প্রোগ্রামিং স্টেটমেন্টগুলির একটি সিরিজ হিসাবে বোঝা যেতে পারে যা নীচে দেওয়া হিসাবে একটি নাম সহ বরাদ্দ করা যেতে পারে:

  1. সেটআপ () এটি প্রোগ্রাম শুরু হওয়ার সময় বলা হয় বা সম্পাদিত হয়।
  2. লুপ() এটি আরডুইনোর পুরো অপারেশন সময়কালে পুনরাবৃত্তভাবে বলা বা সম্পাদিত হয়।

সুতরাং এটির ব্যবহারিক কার্যকারিতা না থাকলেও, প্রযুক্তিগতভাবে একটি সংক্ষিপ্ততম বৈধ আরডুইনো প্রোগ্রামটি এইভাবে লেখা যেতে পারে:

সরলতম প্রোগ্রাম

void setup()
{
}
void loop()
{
}

আপনি লক্ষ্য করেছেন যে অনেক প্রোগ্রামিং ভাষায়, সিস্টেমটি ডিসপ্লে স্ক্রিনে একটি সহজ প্রিন্ট, 'হ্যালো, ওয়ার্ল্ড' দেখিয়ে শুরু হয়

মাইক্রোকন্ট্রোলার ব্যাখ্যায় এই বাক্যাংশের জন্য বৈদ্যুতিন সমতুল্য হ'ল একটি এলইডি চালু এবং বন্ধ করা।

সিস্টেমের একটি সঠিক কার্যকারিতা নির্দেশ করতে এটি লিখতে এবং প্রয়োগ করতে পারে এমন সবচেয়ে প্রাথমিক প্রোগ্রাম।

আমরা নিম্নলিখিত কোডের টুকরোটির মাধ্যমে প্রক্রিয়াটি প্রয়োগ এবং বুঝতে চেষ্টা করব:

তালিকা 1.2: নেতৃত্ব 1 / নেতৃত্ব 1.pde

const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
}
void loop()
{
digitalWrite(kPinLed, HIGH)
delay(500)
digitalWrite(kPinLed, LOW)
delay(500)
}

ঠিক আছে, এখন আসুন কোডটির প্রতিটি লাইনটির অর্থ কী এবং এটি কীভাবে কার্য সম্পাদন করতে কাজ করে তা বুঝতে দিন:

const int kPinLed = 13

এটি একটি ধ্রুবকের মতো কাজ করে যা আমাদের সম্পূর্ণ প্রোগ্রামিং কোর্সের সময় এটির সত্যিকারের মানটির প্রয়োজন ছাড়াই ব্যবহার করার অনুমতি দেয় যা এর বিপরীতে নির্ধারিত হয়।

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

void setup()
{
pinMode(kPinLed, OUTPUT)
}

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

void loop()
{
digitalWrite(kPinLed, HIGH)
delay(500)
digitalWrite(kPinLed, LOW)
delay(500)
}

উপরের লাইনগুলি প্রয়োগটির প্রকৃত বাস্তবায়ন নির্দেশ করে। কোডটি প্রাসঙ্গিক নেতৃত্বাধীন সংযোগের উপরে একটি হাইআউট লিখে এবং রেন্ডার করে শুরু হয়, LED চালু করে।

এখানে, এইচআইএইচ শব্দটির অর্থ সহজভাবে আরডুইনো সম্পর্কিত পিনে + 5 ভি পাওয়া। পরিপূরক শব্দটি LOW কেবল নির্ধারিত পিনে একটি শূন্য বা 0 ভি নির্দেশ করে।

এরপরে, আমরা কল করব delay() যার কাজটি মিলি সেকেন্ডের মাধ্যমে একটি বিলম্ব তৈরি করে (এক সেকেন্ডের 1/1000 তম)। যেহেতু 500 চিত্রটি প্রবেশ করানো হয়েছে, তাই কার্যকর হওয়া বিলম্বটি 1/2 সেকেন্ডের জন্য হতে চলেছে।

এই 1/2 সেকেন্ডটি ত্রুটিযুক্ত হওয়ার সাথে সাথেই পরবর্তী লাইনটি কার্যকর করা হবে যা একই পিনে LOW টার্মের সাথে LED বন্ধ করে দেয়।

পরবর্তী লাইনটি আবার 1/2 সেকেন্ডের জন্য এলইডি বন্ধ রাখার জন্য, 1/2 দ্বিতীয় বিলম্ব উত্পন্ন করে।

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

পরবর্তী স্তরে অগ্রসর হওয়ার আগে, আমি আপনাকে পরামর্শ দিচ্ছি যে দয়া করে উপরের কোডটি প্রোগ্রাম করুন এবং আপনি সঠিকভাবে LED অন / অফ সিকোয়েন্সটি সঠিকভাবে প্রয়োগ করতে সক্ষম কিনা তা পরীক্ষা করে দেখুন।

যেহেতু আরডুইনোতে ডিফল্ট এলইডি পিন # 13 এর সাথে সংযুক্ত রয়েছে, তাই এটি তাত্ক্ষণিকভাবে উপরের প্রোগ্রামটির প্রতিক্রিয়া জানিয়ে ঝলকানি শুরু করা উচিত। তবে, আপনি যদি আপনার বাহ্যিক LED জ্বলজ্বল করে না দেখতে পান তবে আপনার নেতৃত্বের সাথে সংযোগের ত্রুটি থাকতে পারে, আপনি নিজের এলইডিটির মেরুটিকে উল্টিয়ে দেওয়ার চেষ্টা করতে পারেন এবং আশা করি এটিও ঝলকান।

আপনি '500' চিত্রটিকে অন্য কোনও মানের সাথে পরিবর্তন করে দেরি সময়ের সাথে খেলতে পারেন এবং কমান্ডগুলিতে LED 'শ্রবণ' খুঁজে পাবেন এবং নির্দিষ্ট বিলম্ব মান অনুসারে এটি ফ্ল্যাশ করতে পারবেন।

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

1.7 মন্তব্য

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

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

এগুলি বলা হয় মন্তব্য যেগুলি শুধুমাত্র মানব বা ব্যবহারকারী রেফারেন্সের জন্য রচিত এবং কম্পিউটারগুলি এটিকে নিরাপদে উপেক্ষা করতে সক্ষম করার জন্য কোড করা।

এই মন্তব্যের ভাষা কয়েকটি ফর্ম্যাট সহ রচিত:

  1. মন্তব্য করার ব্লক স্টাইল, যেখানে মন্তব্যের বর্ণনাটি শুরুর প্রতীক / * এবং শেষ চিহ্ন হিসাবে অন্তর্ভুক্ত রয়েছে / /
  2. এটি এক লাইনে সীমাবদ্ধ করতে হবে না বরং মন্তব্য বা বর্ণনার দৈর্ঘ্যের উপর নির্ভর করে পরবর্তী পরবর্তী লাইনে বাড়ানো যেতে পারে, নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

/ * এটি একটি মন্তব্য * /

/ * সুতরাং এটি কি * /

/* এবং
* এই
* হিসাবে
* আমরা হব */

একটি মন্তব্যের জন্য দ্রুত একক লাইনের বর্ণনা লেখার জন্য, দুটি স্ল্যাশ // প্রারম্ভিক চিহ্নটি যথেষ্ট হয়ে যায়। এটি কম্পিউটারকে বলে যে এই লাইনটির আসল কোডের সাথে কোনও সম্পর্ক নেই এবং অবশ্যই তা উপেক্ষা করা উচিত। উদাহরণ স্বরূপ:

// এটি এমন একটি মন্তব্য যা কম্পিউটারগুলি উপেক্ষা করবে।

রেফারেন্সের জন্য এখানে একটি উদাহরণ রয়েছে:

/*
* Program Name: Blink
* Author: Alan Smith
* Description:
* Turns an LED on for one half second, then off for one half second repeatedly.
*/

/* Pin Definitions */
const int kPinLed = 13
/*
* Function Name: setup
* Purpose: Run once when the system powers up.
*/
void setup()
{
pinMode(kPinLed, OUTPUT)
}
/*
* Function name: loop
* Purpose: Runs over and over again, as long as the Arduino has power
*/
void loop()
{
digitalWrite(kPinLed, HIGH)
delay(500)
digitalWrite(kPinLed, LOW)
delay(500)
}

1.8 সমস্যা সমাধান

আপনি যদি আপনার প্রোগ্রামটি সংকলনের সময় একটি 'ত্রুটি' দেখায় বা অন্য কোনও সমস্যা দেখতে পান তবে নিম্নলিখিত টিপসগুলি আপনাকে সম্ভবত আপনার কোডটি পুনরায় পরীক্ষা করতে সহায়তা করবে বাধা থেকে মুক্তি পেতে।

  1. আপনার প্রোগ্রামের ভাষা কেস সংবেদনশীল হবে। উদাহরণস্বরূপ অভিব্যক্তি মাইওয়ার হিসাবে লেখা যায় না মাইওয়ার
  2. আপনার কীবোর্ড টাইপিং দ্বারা চালিত হতে পারে এমন সমস্ত ধরণের সাদা স্পেসগুলি শেষ পর্যন্ত একক স্থান হিসাবে রেন্ডার করা হয় এবং এটি কেবল আপনার দ্বারা দৃশ্যমান বা বোঝা যায়, কম্পিউটার এটিকে বিবেচনায় নেবে না। সহজ কথায় বলতে গেলে, কোনও ধরণের ফ্রি স্পেসের কোড ফলাফলগুলিতে কোনও প্রভাব পড়বে না।
  3. কোডের প্রতিটি ব্লক অবশ্যই বাম এবং ডান কোঁকড়ানো বন্ধনী দিয়ে আবদ্ধ থাকতে হবে, '{' এবং '}'
  4. সংখ্যা অঙ্কগুলি কমা দিয়ে আলাদা করা উচিত নয়। উদাহরণস্বরূপ, 1000 লিখতে পারে না 1000।
  5. কোঁকড়া বন্ধনীগুলির মধ্যে বদ্ধ প্রতিটি কোড লাইন একটি সেমিকোলন দিয়ে শেষ করতে হবে

আরডুইনোর সাথে আকর্ষণীয় এলইডি লাইট সিকোয়েন্স তৈরি করা

আমাদের পূর্ববর্তী অধ্যায়ে আমরা শিখলাম কীভাবে একটি অবিচ্ছিন্ন বিলম্বের হারের সাথে একটি এলইডি অন / অফ জ্বলতে হবে।

এখন আমরা শিখব কীভাবে একই কোডে প্রোগ্রামের কোডটি আপগ্রেড করে বিভিন্ন বিলম্বের ধরণগুলি কার্যকর করা যেতে পারে।

আমরা কোনও বাহ্যিক এলইডি ব্যবহার করব না, বরং পিন # 13 এ আরডুইনো বোর্ডে নির্মিত ডিফল্ট এলইডি ব্যবহার করব। আপনি এই ইউএসবি সংযোজকের ঠিক পিছনে এই ছোট এসএমডি এলইডি খুঁজে পেতে পারেন।

২.২ যদি বিবৃতিগুলি বোঝা যায়

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

বিবৃতি যদি 1 ম নিয়ন্ত্রণ কাঠামো হয়। নিম্নলিখিত প্রয়োগটি এটি কীভাবে ব্যবহৃত হয় তা দেখায়:

const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
}
int delayTime = 1000
void loop()
{
delayTime = delayTime - 100
if(delayTime <= 0){ // If the delay time is zero or less, reset it.
delayTime = 1000
}
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
}

আমরা উপরের কোডটি ধাপ অনুসারে বোঝার চেষ্টা করব এবং শিখব কীভাবে এটি অন্যান্য অনুরূপ মৃত্যুদণ্ড কার্যকর করতে পারে।

1 ম এবং 7 ম লাইনের মধ্যে কোডগুলি আমাদের প্রাথমিক প্রোগ্রামের সাথে ঠিক একই রকম।

প্রথম পরিবর্তনটি আসলে 8 তম লাইনে ঘটে।

int delayTime = 1000

আপনি এটি প্রথম পংক্তির কোডের সাথে সাদৃশ্যপূর্ণ হিসাবে খুঁজে পেতে পারেন, এই শব্দটি অনুপস্থিত তা বাদ দিয়ে কনস্ট।

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

উপরের উদাহরণে আপনি দেখতে পারেন যে এই ভেরিয়েবলটি 1000 এর মান দিয়ে চিহ্নিত করা হয়েছে Remember মনে রাখবেন, এই জাতীয় ভেরিয়েবলগুলি কোঁকড়ানো বন্ধনীগুলির মধ্যে আবদ্ধ থাকে কেবল কেবল কোঁকড়ানো বন্ধনীগুলির জোড়গুলির মধ্যে কঠোরভাবে লিখতে হয়, এবং 'স্থানীয়' ভেরিয়েবল হিসাবে উল্লেখ করা হয়।

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

এগিয়ে চলতে, আপনি দেখতে পাচ্ছেন যে 9 এবং 11 লাইনের মধ্যে কোডগুলিও প্রথম প্রোগ্রামের মতো, তবে 11 লাইনের পরে জিনিসগুলি আকর্ষণীয় হতে শুরু করে Let's কীভাবে দেখা যাক!

delayTime = delayTime - 100

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

এর অর্থ 100 এর প্রাথমিক মান থেকে কেটে নেওয়া হয়, এটি 900 এর নতুন মান সরবরাহ করে।

নিম্নলিখিত চিত্রের মাধ্যমে আমরা আরডুইনো ভাষায় ব্যবহৃত কয়েকটি গণিত অপারেটরকে বোঝার চেষ্টা করব।

আরডুইনো ম্যাথ অপারেটর প্রতীক

এখন 13 13 এর লাইনের মধ্যে কোডগুলি মূল্যায়ন করা যাক।

if(delayTime <= 0){ // If the delay time is zero or less, reset it.
delayTime = 1000
}

উপরের কোডের মূল অংশটি হ'ল এটি নিশ্চিত করা যে কোনও বাধা ছাড়াই এলইডি জ্বলতে থাকে।

আসল থেকে 100 টি কেটে নেওয়া হচ্ছে এই কারণে বিলম্ব সময় এটি এলইডি জ্বলতে শূন্যে পৌঁছতে বাধা দেয় এবং জ্বলজ্বলে অবিচ্ছিন্নভাবে যেতে দেয়।

নিম্নলিখিত চিত্রটি কয়েকটি তুলনামূলক অপারেটর দেখায় যা আমরা আমাদের কোডগুলিতে ব্যবহার করব:

আরডুইনো কোডগুলির জন্য তুলনা অপারেটর

আমাদের উপরের কোডে, আমরা কোডটি _ _ + _ | হতে পারে tested

তবে, নেতিবাচক চিত্র হওয়া সমানভাবে খারাপ হতে পারে, তাই আমরা এটির জন্য যাইনি, এবং এটি একটি প্রস্তাবিত অনুশীলন।

ভাবুন যদি আমরা | _ _ + _ | থেকে 100 এর পরিবর্তে 300 টি কেটে নেওয়ার চেষ্টা করতাম তবে এর পরিণতি কী হতে পারে?

তাই এখন আপনি বুঝতে পেরেছেন যে যদি | _ + + _ | শূন্যের চেয়ে কম বা সমান হিসাবে লেখা হয়, তবে বিলম্বের সময়টি মূল চিত্র 1000 এ ফিরে আসবে।

if(delayTime == 0)

উপরে বর্ণিত কোডের শেষ 4 টি লাইনগুলি ধারাবাহিকভাবে LED চালু / বন্ধ, চালু / বন্ধ করার জন্য দায়বদ্ধ হয়ে পড়ে।

এখানে আপনি স্পষ্টভাবে লক্ষ করতে পারেন যে বেশ কয়েকটি চিত্র ব্যবহার করার পরিবর্তে আমরা বিলম্বের সময় নির্ধারণের জন্য একটি ভেরিয়েবল ব্যবহার করেছি যাতে কোডের অপারেশনাল সময়কালে আমরা এটি যেমন চাই তেমন সমন্বয় করতে পারি। ঠিক আছে তো?

2.3 ইএলএসই বিবৃতি

এখানে আমরা শিখব কেন এবং কীভাবে যদি শব্দটির একটি ধারা থাকতে পারে অন্য যাতে এটি পরিস্থিতি স্থির করে যদি বিবৃতি মিথ্যা।

আমি দুঃখিত যদি এটি খুব বিভ্রান্তিকর শোনায়, চিন্তা করবেন না, আমরা নিম্নলিখিত উদাহরণ দিয়ে এটি বোঝার চেষ্টা করব:

delayTime

উপরের দিকে আপনি ভালভাবে দেখতে পাবেন যে দশম লাইন কোডটি কেবল তখনই কার্যকর করা হয় যখন | _ _ + _ | কম বা 100 এর সমান, যদি না হয় তবে 13 তম লাইনের কোডটি কার্যকর করা হবে, তবে উভয়ই একসাথে কখনই ঘটতে পারে না, 10 তম লাইন বা 13 তম লাইনের কোড কার্যকর করা হবে, উভয়ই নয়।

আপনি লক্ষ করেছেন যে আমরা আমাদের পূর্ববর্তী বিভাগ ২.২-এর বিপরীতে যা করেছি তার বিপরীতে, এখানে আমরা ০ টির সাথে তুলনা করি না বরং ১০০ এর সাথে তুলনা করি This কারণ এটি উদাহরণের তুলনায় আমরা ধারাটি ২.২ এর বিপরীতে ১০০ বিয়োগফলের তুলনায়, আমরা তারপরে তুলনা করেছি বিয়োগ আপনি কি বলতে পারবেন যে আমরা যদি 100 এর পরিবর্তে 0 তুলনা করি তবে কী ঘটতে পারে?

২.৪ যখন বিবৃতি

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

নিম্নলিখিত উদাহরণটি আপনাকে এটি আরও ভালভাবে বুঝতে সাহায্য করবে

delayTime

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

2.5 সত্য এবং মিথ্যা কি?

প্রোগ্রামিং ভাষায়, মিথ্যা শূন্য (0) বোঝায়। আসলে 'সত্য' ব্যবহার করা হয় না, পরিবর্তে এটি ধরে নেওয়া হয় যে যখন কিছুই মিথ্যা নয়, তখন যা অন্তর্ভুক্ত থাকে সেগুলিই সত্য।

এটি কিছুটা অদ্ভুত দেখাচ্ছে তবে এটি কাজটি খুব সুন্দরভাবে করে।

আমরা নিম্নলিখিত উদাহরণের মাধ্যমে পরিস্থিতি উপলব্ধি করার চেষ্টা করব।

আপনি কখনও কখনও নীচের মত একটি কোড জুড়ে আসতে পারেন:

digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)

এটি কোডেড দেখে মনে হচ্ছে LED চালনা চিরকালের জন্য সাইকেল চালিয়ে যাবে, যতক্ষণ পাওয়ার পাওয়া যায়।

তবে, এই ধরণের কোডটির একটি নেতিবাচক দিকটি দেখা দিতে পারে যখন দুর্ঘটনাক্রমে ব্যবহারকারী == এর পরিবর্তে a = প্রয়োগ করে।

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

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

কোডটি এর পরে প্রদর্শিত হবে:

const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
}
int delayTime = 1000
void loop()
{
if(delayTime <= 100){ // If it is less than or equal to 100, reset it
delayTime = 1000
}
else{
delayTime = delayTime - 100
}
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
}

ভুলটি 0 থেকে delayTime বরাদ্দ করবে এবং এর দিকে পরিচালিত করবে যদি 0 টি সত্য ছিল কি না তা যাচাই করার জন্য বিবৃতি। যেহেতু 0 টি মিথ্যা বোঝায় তাই এটি ভাবেন যে এটি সত্য নয়, এবং | _ _ _ _ | প্রয়োগ করা বন্ধ করবে, তবে পরিবর্তে ফাংশন const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
}
int delayTime = 1000
void loop()
{
while(delayTime > 0){ // while delayTime is greater than 0
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
delayTime = delayTime - 100
}
while(delayTime <1000){ // while delayTime is less than 1000
delayTime = delayTime + 100 // do this first so we don’t have a loop with delayTime = 0
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
}
}
লুপ () এর সময়কালে 0 এ অনুষ্ঠিত হয়।

এটা দেখতে খুব অযাচিত লাগে !!

সুতরাং, সর্বদা আপনার প্রোগ্রামটি ডাবল পরীক্ষা করে দেখুন যাতে আপনি এরকম মূর্খ কোনও ভুল করেন নি।

2.6 সংমিশ্রণ

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

যৌক্তিক পদগুলিতে সংযোজনগুলি কার্যকর করতে নিম্নলিখিত পদ্ধতিতে 3 টি পদ্ধতিতে কাজ করা যেতে পারে:

টেবিলটি আরডুইনো সমন্বয় পদ্ধতিগুলি দেখায়

এটি জেনে রাখা আকর্ষণীয় হবে যে নোট অপারেটর একটি ভেরিয়েবলের জন্য একটি স্যুইচার হিসাবে কাজ করতে পারে যা হতে পারে মনোনীত করা যেতে পারে সত্য বা মিথ্যা (বা কম বা উচ্চ)

নিম্নলিখিত উদাহরণটি শর্তটি বর্ণনা করে:

while (1){
digitalWrite(kPinLed, HIGH)
delay(100)
digitalWrite(kPinLed, LOW)
delay(100)
}

এখানে | _ _ + _ | কম হবে এবং পরবর্তীকালে int delayTime = 1000
void loop()
{
if(delayTime = 0){ // WRONG!!! the = should have been ==
delayTime = 1000
}
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
delayTime = delayTime - 100
}
যত তাড়াতাড়ি হবে, এটি উচ্চে পরিণত হবে। নিম্নলিখিত লুপের কারণ | _ _ + _ | যখন উচ্চ হতে হবে | _ _ _ _ | কম.

2.7 বিবৃতি জন্য

এখন আমরা অন্য একটি নিয়ন্ত্রণ কাঠামো যা বোঝার চেষ্টা করব জন্য লুপ. আপনি বেশ কয়েকটি সংখ্যক বার প্রয়োগ করতে চাইলে এটি খুব সহজ হতে পারে।

আসুন নিম্নলিখিত উদাহরণ সহ এটি বুঝতে:

delayTime

এর সাথে লাইনে আপনি অনন্য কিছু খুঁজে পেতে পারেন জন্য।

এটি কোড আমি ++? । এটি বরং প্রোগ্রামারদের যারা দরকারী বরং অলস এবং সুবিধাজনক শর্টকাটের মাধ্যমে কোডিং বাস্তবায়ন করতে চান তাদের পক্ষে এটি কার্যকর

উপরের পদটি যৌগিক অপারেটর হিসাবে পরিচিত, যেহেতু তারা একটি অ্যাসাইনমেন্ট অপারেটরের সাথে অন্য একটি অ্যাসাইনমেন্ট অপারেটরের সাথে সংযুক্ত করার কাজ করে do এর মধ্যে সর্বাধিক জনপ্রিয় নিম্নলিখিত টেবিলটিতে দৃশ্যমান করা যেতে পারে:

আরডুইনো যৌগিক অপারেটরগুলি

আপনি দেখতে পাবেন যে বিবৃতি দেওয়ার জন্য একটিতে 3 টি উপ-বিবৃতি রয়েছে। এটি নীচে প্রদর্শিত হিসাবে কাঠামোযুক্ত:

delayTime = 1000

# 1 বিবৃতিটি শুরুতে এবং ঠিক একবারে ঘটে। লুপটি চলাকালীন শর্তটি প্রতিবার পরীক্ষা করা হয়। যখনই হয় সত্য কোঁকড়ানো বন্ধনীগুলির মধ্যে, পরবর্তী বিবৃতি # 2 প্রয়োগ করা হবে। ক্ষেত্রে ক মিথ্যা, সিস্টেমটি পরবর্তী ব্লকের কোডে চলে আসে।

আরও এলইডি সংযুক্ত হচ্ছে

ঠিক আছে, এখন আমরা আরও আকর্ষণীয় প্রভাব পেতে আরও বেশি সংখ্যক এলইডি সংযোগ করতে পারি তা আমরা দেখব।

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

আরডুইনো একাধিক এলইডি সংযোগ

এখন আসুন একটি প্রোগ্রাম ঠিক করুন যা আমাদের হার্ডওয়্যারটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা যাচাই করতে সক্ষম করে।

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

এটি একটি সম্ভাব্য ত্রুটি দ্রুত সমস্যা সমাধানে সহায়তা করে।

নীচের কোড উদাহরণটি চক্রীয় পদ্ধতিতে একের পর এক ঘুরিয়ে একটি নির্দিষ্ট প্যাটার্নকে LED 2 থেকে 5 সরবরাহ করে।

delayTime

আপনি খেয়াল করতে পারেন যে কোডটি দীর্ঘ দেখায় এবং অতএব ভুলের প্রবণতা ব্যতীত কোডটিতে কোনও ভুল নেই।

অবশ্যই উপরের কোডটি লেখার আরও ভাল উপায় আছে, নিম্নলিখিত বিভাগটি এটি প্রকাশ করবে।

2.9 অ্যারে উপস্থাপন করা

অ্যারেগুলি ভেরিয়েবলগুলির একটি গ্রুপ হতে পারে যা সূচী সংখ্যাগুলির সাথে সূচকযুক্ত হতে পারে। নিম্নলিখিত উদাহরণটি এটি আরও ভালভাবে বুঝতে আমাদের সহায়তা করবে।

int ledState = LOW
void loop()
{
ledState = !ledState // toggle value of ledState
digitalWrite(kPinLed, ledState)
delay(1000)
}

ঠিক আছে, এখন প্রতিটি বিভাগের মধ্য দিয়ে যাওয়া এবং তারা আসলে কীভাবে কাজ করে তা বুঝতে দিন understand

ledState

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

ledState = !ledState

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

আপনি যদি 0 টি সংখ্যার সাথে সূচিযুক্ত একটি অ্যারে দেখতে পান তবে এটি অ্যারেতে প্রথম উপাদানটিকে নির্দেশ করে, যেমন _ _ + _ | দেখানো হয়েছে।

একইভাবে শেষ উপাদানটি | _ _ + _ | হিসাবে দেখানো হবে, যেহেতু 0 থেকে 3 পর্যন্ত গণনা 4।

ledState

উপরের কোডটি প্রতিটি অ্যারে উপাদানগুলির মধ্য দিয়ে এগিয়ে যাওয়ার জন্য এবং তাদের OUTPUTS হিসাবে সেট করার জন্য লুপের ব্যবহার দেখায়। অ্যারের প্রতিটি উপাদানগুলিতে পৌঁছানোর জন্য আমরা সূচকের সাথে বর্গাকার বন্ধনীগুলি প্রয়োগ করি।

আপনি যদি ভাবছেন যে বিনা ছাড়াই # 5 পিন করতে পিন # 2 ব্যবহার করা সম্ভব কিনা, উত্তর হ্যাঁ, এটি সম্ভব is তবে এই উদাহরণে এটি করা হয়নি কারণ আমরা এটি সেভাবে করি নি। নিম্নলিখিত বিভাগগুলিতে আপনি নির্বাচিত আউটপুট পিনগুলি লাইনে না থাকলে আপনি অ্যারে পদ্ধতির অপসারণ করতে পারেন।

এগিয়ে চলুন, আসুন কোডের পরবর্তী ব্লকটি কী করে তা দেখুন:

ledState = !ledState

এখানে কোডটি প্রতিটি LED এর মাধ্যমে 100 মিলিসেকেন্ডের ব্যবধান বা দেরি করে ক্রমানুসারে তাদের চালু করতে চলেছে।

const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
}
void loop()
{
for(int i = 0 i <4 i++){
digitalWrite(kPinLed, HIGH)
delay(200)
digitalWrite(kPinLed, LOW)
delay(200)
}
delay(1000) // 1 second
}

উপরের কোড ব্যবহার করে কীভাবে প্রয়োগ হয় তা প্রদর্শিত হয় লুপ জন্য এমনকি বিপরীত ক্রমে লুপ দিয়ে সরানোর জন্য ব্যবহৃত হতে পারে।

এটি | _ _ _ _ | থেকে শুরু হয় কারণ অ্যারেগুলি শূন্য সূচকযুক্ত। আমরা | _ _ + _ | থেকে শুরু করি না কারণ এর ফলে অ্যারের সমাপ্তি অতিক্রম করবে।

কোডটি> = 0 টি পরীক্ষা করে ব্যবহার করে যাতে 0 সূচীতে প্রথম উপাদানটি মিস করা বা উপেক্ষা করা যায় না।

অধ্যায় 3

একটি ইনপুট কি

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

৩.১ পুশবটন ব্যবহার করে

আমরা সবাই জানি একটি পুশ-বাটন কী এবং এটি কীভাবে কাজ করে। এটি এক ধরণের সুইচ বা বোতাম যা হতাশাগ্রস্থ অবস্থায় এক মুহূর্তে এক সার্কিট পর্যায় থেকে অন্য সংকেতের সাথে সংযোগ স্থাপন করে এবং প্রকাশিত হলে সিগন্যালটি ভেঙে দেয়।

3.1.1 একটি বোতাম এবং একটি এলইডি

আরডুইনো সহ ইন্টারফেস পুশ বোতাম

উপরে বর্ণিত বিবরণ অনুযায়ী আমরা আরডুইনোর সাথে একটি পুশ-বোতামের সাহায্যে আরডিনোকে সংযুক্ত করব এবং সেটআপের বেসিক কাজ এবং বাস্তবায়ন শিখব।

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

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

আসুন নীচের কোডটি প্রয়োগ করে এগিয়ে চলুন এবং এটি কাজ করে দেখুন!

for (statement1conditionstatement2){
// statements
}

আপনি এখানে কিছু জিনিস দেখতে পাবেন যা দেখতে অস্বাভাবিক লাগে। আসুন তাদের ধাপে মাপসই করা যাক।

const int kPinLed1 = 2
const int kPinLed2 = 3
const int kPinLed3 = 4
const int kPinLed4 = 5
void setup()
{
pinMode(kPinLed1, OUTPUT)
pinMode(kPinLed2, OUTPUT)
pinMode(kPinLed3, OUTPUT)
pinMode(kPinLed4, OUTPUT)
}
void loop()
{
// turn on each of the LEDs in order
digitalWrite(kPinLed1, HIGH)
delay(100)
digitalWrite(kPinLed2, HIGH)
delay(100)
digitalWrite(kPinLed3, HIGH)
delay(100)
digitalWrite(kPinLed4, HIGH)
delay(100)
// turn off each of the LEDs in order
digitalWrite(kPinLed1, LOW)
delay(100)
digitalWrite(kPinLed2, LOW)
delay(100)
digitalWrite(kPinLed3, LOW)
delay(100)
digitalWrite(kPinLed4, LOW)
}

আমরা প্রথম জিনিসটি ঠিক করি বাটনপিন হিসাবে ইনপুট. এটা বেশ বেসিক, আমি জানি।

পরবর্তী, আমরা বরাদ্দ উচ্চ যাও ইনপুট পিন আপনি আশ্চর্য, কীভাবে ইনপুটটিতে কিছু লেখা সম্ভব? অবশ্যই, এটি আকর্ষণীয় হতে পারে।

প্রকৃতপক্ষে, একটি হাইডিকে একটি আরডুইনো ইনপুটকে নির্ধারণের ফলে একটি অভ্যন্তরীণ 20 কে ওহম পুল-আপ রেজিস্টার চালু হয় (এই পিনের একটি নিচে এটি বন্ধ করে দেয়)।

আর একটি প্রশ্ন যা আপনি হতে পারেন তা হ'ল টানা-আপ প্রতিরোধক। আমি পুল আপ প্রতিরোধক সম্পর্কে একটি বিস্তৃত পোস্ট কভার করেছি যা আপনি এটি এখানে শিখুন

ঠিক আছে, এগিয়ে চলছে, এখন আসুন মূল লুপ কোডটি দেখুন:

const int k_numLEDs = 4
const int kPinLeds[k_numLEDs] = {2,3,4,5} // LEDs connected to pins 2-5
void setup()
{
for(int i = 0 i pinMode(kPinLeds[i], OUTPUT)
}
}
void loop()
{
for(int i = 0 i digitalWrite(kPinLeds[i], HIGH)
delay(100)
}
for(int i = k_numLEDs - 1 i >= 0 i--){
digitalWrite(kPinLeds[i], LOW)
delay(100)
}
}

আপনি ধাক্কা বোতাম টিপলে, তারযুক্ত পিনটি স্থলভাগে সংযুক্ত হয়ে যায়, যা একটিকে রেন্ডার করে কম যে পিন। এবং চাপবিহীন অবস্থায় একই পিনটি রাখা হয় উচ্চ বা 20K অভ্যন্তরীণ পুল-আপ রোধকের মাধ্যমে + 5 ভি।

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

৩.১.২ দুটি বোতাম এবং একটি এলইডি

ঠিক আছে, আপনি আশ্চর্য হতে পারেন যে উপরের দেখানো ক্রিয়াটি কোনও আরডিনো ছাড়াও করা যেত। আমি বুঝতে পারি, তবে এটি কীভাবে আর্দুনোর সাথে পুশ বোতামটি ব্যবহার করা যেতে পারে তা শিখার জন্য একটি খাড়া পাথর।

এই বিন্দু অবধি, আমরা হয় সুইচ চালু (হাই) বা সুইচ অফ (এলও) একটি এলইডি জন্য রাইটিং কোড অধ্যয়ন করেছি।

এখন আসুন দেখুন কীভাবে একটি আরডুইনোর সাথে LED এর উজ্জ্বলতা নিয়ন্ত্রণ করা যায়।

এটি দুটি পদ্ধতি ব্যবহার করে করা যেতে পারে:

  1. এলইডিতে কারেন্টের পরিমাণ সীমাবদ্ধ করে
  2. ব্যবহার করে পিডাব্লুএম বা পালস প্রস্থের সংশোধন, যার মধ্যে এলইডি সরবরাহ সরবরাহ খুব দ্রুত কিছু কাঙ্ক্ষিত হারে চালু / বন্ধ হয়, একটি গড় আলোকসজ্জা উত্পাদন করে যার তীব্রতা পিডব্লিউএমের উপর নির্ভর করবে।

একটি আরডুইনো বোর্ডে পিডব্লিউএম সমর্থন একটি টিলড (~) দিয়ে চিহ্নিত পিনগুলিতে পাওয়া যায়, যা পিন 3, 4,5,9,10 এবং 11) 500Hz (সেকেন্ডে 500 বার) থাকে। ব্যবহারকারী 0 এবং 255 এর মধ্যে এমন কোনও মান সরবরাহ করতে সক্ষম হয় যেখানে 0 কোনও উচ্চতা বা না + 5 ভি উল্লেখ করে এবং 255 আর্দুইনোকে সর্বদা একটি উচ্চ বা + 5 ভি পেতে বলে। এই আদেশগুলি শুরুর জন্য আপনাকে পছন্দসই মান সহ অ্যানালগ রাইট () অ্যাক্সেস করতে হবে।

আপনি পিডব্লিউএমকে x / 255 বলে ধরে নিতে পারেন যেখানে x | _ _ + _ | মাধ্যমে আপনি পাঠাতে চান এমন পছন্দসই মান।

আরডুইনো পিডব্লিউএম নিয়ন্ত্রণ

উপরে বর্ণিত হিসাবে আরডুইনো এবং অন্যান্য প্যারামিটার সেটআপ করুন।

const int k_numLEDs = 4

আপনি এখানে 3 লাইন খুঁজে পেতে কিছু ব্যাখ্যা প্রয়োজন।

const int kPinLeds[k_numLEDs] = {2,3,4,5} // LEDs connected to pins 2-5

লাইন: code: k_LEDPins is k_LEDPins[0] | সীমাবদ্ধতা () হিসাবে পরিচিত আরডুইনোর ভিতরে একটি অনন্য ফাংশন চিত্রিত করে।

এই অভ্যন্তরীণ ফাংশনটিতে নিম্নলিখিতগুলির মতো কোড রয়েছে:

পূর্ব সীমাবদ্ধতা (মান মান, অন্তর্নিহিত মিনিট, অন্তর্ সর্বাধিক)
k_LEDPins[3]

এর আগে আলোচনা করা সমস্ত কোড দিয়ে শুরু হয়েছিল শূন্য , যার অর্থ কোনও কিছুই প্রত্যাবর্তন (অকার্যকর) নয়। যদিও উপরের কোডটি দিয়ে শুরু হয় int , এটি ইঙ্গিত দেয় যে এটি একটি পূর্ণসংখ্যা ফেরত দেয়। আমরা পরবর্তী বিভাগগুলিতে আরও আলোচনা করব, এই মুহুর্তে কেবল মনে রাখবেন যে কোনও পূর্ণসংখ্যার কোনও ভগ্নাংশের অংশ নেই।

ঠিক আছে, সুতরাং এটি কোডটি বোঝায়: void setup()
{
for(int i = 0 i pinMode(kPinLeds[i], OUTPUT)
}
}
| _ _ _ _ | বরাদ্দ করে।

পরের লাইনে for(int i = 0 i digitalWrite(kPinLeds[i], HIGH)
delay(100)
}
নিযুক্ত করে পছন্দসই মান সহ নির্বাচিত পিনে PWM প্রয়োগ করার জন্য আরডুইনোকে আদেশ দিন commands

পরের লাইনটি 20 মিলিসেকেন্ডের বিলম্ব তৈরি করে, এটি নিশ্চিত করা যায় যে আমরা খাওয়া 50 হার্জ বা সেকেন্ডে 50 বারের চেয়ে দ্রুত সামঞ্জস্য করি না। এর কারণ মানুষ একটি আরডিনো থেকে অনেক ধীর হতে পারে। তাই যদি বিলম্ব না করা হয় তবে প্রোগ্রামটি আমাদের অনুভব করতে পারে যে প্রথম বোতামটি টিপলে LED বন্ধ করে দেওয়া হয়েছে এবং দ্বিতীয় বোতাম টিপুন এটি চালু হয়েছে (এটি নিশ্চিত করার জন্য নিজে চেষ্টা করুন)।

৩.২ পেন্টিওমিটার

আসুন এগিয়ে যান এবং কীভাবে ব্যবহার করবেন তা শিখি আরডুইনো সহ ক্ষমতাশালী

পোটিনোমিটার বা পাত্র কীভাবে কাজ করে তা জানতে আপনি এটি পড়তে পারেন নিবন্ধ

আরডুইনো দিয়ে পোটেনিওমিটার ব্যবহার করা

উপরে দেখানো মত আপনার আরডুইনোর সাথে দেখানো প্যারামিটারগুলি সংযুক্ত করুন।

একটি পাত্রের 3 টি টার্মিনাল থাকবে। মধ্যম টার্মিন্যাসাল আড়ডিনোতে আনালোগ ইন 0 এর সাথে সংযুক্ত হবে। অন্য দুটি বাহ্যিক টার্মিনালগুলি + 5V এবং 0 ভি সরবরাহকারী রেলের সাথে সংযুক্ত থাকতে পারে।

আসুন প্রোগ্রাম এবং ফলাফলগুলি দেখুন:

for(int i = k_numLEDs - 1 i >= 0 i--){
digitalWrite(kPinLeds[i], LOW)
delay(100)
}

আপনি বেশ কয়েকটি জিনিস দেখতে পাবেন যা পুরোপুরি নতুন দেখায় এবং আমাদের আগের কোডগুলির মধ্যে অন্তর্ভুক্ত নয়।

  1. ধ্রুবক k_numLEDs - 1 | A0 হিসাবে নির্ধারিত হয়, যার মধ্যে A কে অ্যানালগ পিনগুলির মধ্যে একটি বর্ণনা করার শর্টকাট is তবে A0 এছাড়াও পিন # 14, এ 1 আরও 15 টি পিন করতে উল্লেখ করে এবং এগুলি আপনাকে পরীক্ষার জন্য পিনের বাইরে চলে যাওয়ার ক্ষেত্রে ডিজিটাল ইনপুট / আউটপুট হিসাবে ব্যবহার করার অনুমতি দেয়। তবে মনে রাখবেন আপনি ডিজিটাল পিনগুলি অ্যানালগ পিন হিসাবে ব্যবহার করতে পারবেন না।
  2. লাইন: k_LEDPins[4] | আরডুইনো হিসাবে পরিচিত হিসাবে একটি নতুন ভিতরে ফাংশন উপস্থাপন মানচিত্র ()। এই বৈশিষ্ট্যটি প্রদত্ত রেঞ্জ থেকে অন্যটিতে পুনরায় ক্যালিব্রেট করে, হিসাবে চিহ্নিত করা হয় মানচিত্র (মান, নিম্ন থেকে, উচ্চ থেকে, নীচে, থেকে উচ্চ) | _ _ + _ | যেহেতু এটি গুরুত্বপূর্ণ হয়ে উঠতে পারে 0-1023 এর মধ্যে একটি মান দেয় তবে এনালগ রাইট 0-255 থেকে কোনও মান গ্রহণ করতে সক্ষম হয়।

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

কোনও সমস্যা নেই, এখন আমরা এমন কিছু করব যা একটি আরডুইনো ছাড়া করা যায় না।

এই পরীক্ষায় আমরা দেখতে পাব যে কোনও পাত্রের বিবিধ প্রতিরোধ ক্ষমতা কীভাবে জ্বলতে গতি বা এলইডি হারকে নিয়ন্ত্রণ করতে ব্যবহৃত হতে পারে।

প্রোগ্রামটি এখানে:

const int kPinButton1 = 2
const int kPinLed = 9
void setup()
{
pinMode(kPinButton1, INPUT)
digitalWrite(kPinButton1, HIGH) // turn on pull-up resistor
pinMode(kPinLed, OUTPUT)
}
void loop()
{
if(digitalRead(kPinButton1) == LOW){
digitalWrite(kPinLed, HIGH)
}
else{
digitalWrite(kPinLed, LOW)
}
}

৩.২.৩ বিলম্ব এড়ানো ()

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

void setup()
{
pinMode(kPinButton1, INPUT)
digitalWrite(kPinButton1, HIGH) // turn on pull-up resistor
pinMode(kPinLed, OUTPUT)
}

তাহলে উপরের কোডে কী আলাদা? এটি নীচের লাইনটি যা পার্থক্য তৈরি করে।

void loop()
{
if(digitalRead(kPinButton1) == LOW){
digitalWrite(kPinLed, HIGH)
}
else{
digitalWrite(kPinLed, LOW)
}
}

এই বিভাগ পর্যন্ত, আমরা চলক int সম্পর্কে আলোচনা করেছি। তবে, আপনি অ্যাক্সেস করতে পারেন এমন আরও অনেক ধরণের ভেরিয়েবল থাকতে পারে। তালিকাটি নীচে ই পড়তে পারে:

আরডুইনো ভেরিয়েবলের প্রকার

বর্তমানে, এটি কেবল অপেক্ষাকৃত বড় সংখ্যক সংরক্ষণের জন্য জেনে রাখা গুরুত্বপূর্ণ int পরিবর্তনশীল, আপনি শব্দটি ব্যবহার করতে পারেন দীর্ঘ বা ক দীর্ঘ অন্তর্নিহিত

এখানে আপনি নামের আরও একটি আকর্ষণীয় ফাংশন দেখতে পাবেন মিলিস ()।

এটি আর্দুইনো শুরু থেকেই তার কাজকর্মের সময়কালে মিলিসেকেন্ডে সময়সীমা তৈরি করে (এটি প্রতি 50 দিন পরে 0 এ পুনরায় সেট হবে)। এখানে এটি একটি দীর্ঘ ফেরত কারণ যদি এটি ফিরে আসে int , দীর্ঘ সময়ের জন্য গণনা সম্ভব নাও হতে পারে। আপনি ঠিক কতক্ষণ উত্তর দিতে পারেন? উত্তর 32.767 সেকেন্ড।

সুতরাং বিলম্ব () ব্যবহার না করে, আমরা মিলিস () পরীক্ষা করে দেখি এবং যত তাড়াতাড়ি নির্দিষ্ট পরিমাণ মিলিসেকেন্ড ল্যাপ হয়ে যায় আমরা এলইডিটি পরিবর্তন করি। ফলস্বরূপ আমরা শেষ সময়ে এটি পরিবর্তন করার সময় সংরক্ষণ করি গত বার পরিবর্তনশীল, যাতে এটি আমাদের যখনই চাইবে এটি আবার পরীক্ষা করতে দেয়।

3.3 আরজিবি এলইডি

এখন পর্যন্ত আমরা একক রঙের এলইডি নিয়ে খেলেছি। যদিও এলইডি অন্য রঙের পরিবর্তে এলইডি রঙ পরিবর্তন করা যেতে পারে তবে আরজিবি এলইডি ব্যবহার সম্পর্কে কীভাবে how এলইডি রঙ পরিবর্তন করতে এলইডি পরিবর্তন না করে?

একটি আরজিবি এলইডি মূলত একটি এলইডি যা একটি লাল, সবুজ এবং নীল এলইডি এমবেড করে একটি একক এলইডিতে মিশে থাকে। এটিতে একটি সাধারণ সীসা রয়েছে যা স্থল বা 0 ভি সরবরাহ রেলতে যায় এবং অন্যান্য 3 টি সীসাগুলি বাস্তবায়নের জন্য বৈচিত্র্যময় পিডব্লিউএম ইতিবাচক সংকেত দিয়ে খাওয়ানো হয় রঙ মিশ্রণ

আপনি নীচে প্রদর্শিত হিসাবে সেট আপ তারের করতে পারেন:

আরডুইনো সহ আরজিবি নিয়ন্ত্রণ করুন

এটি দেখতে কিছুটা জটিল মনে হতে পারে তবে এটি পিডাব্লুএম ব্যবহার করে আমাদের পূর্ববর্তী LED কন্ট্রোল ডিজাইনের একটি প্রতিরূপ।

এখানে একটি অনুশীলন প্রোগ্রাম কোড:

analogWrite()

এই কোডটি আপলোড করার পরে, পট সামঞ্জস্যগুলি কীভাবে আরজিবিতে আকর্ষণীয় হালকা প্রভাব তৈরি করে তা দেখুন, এটি আসল মজাদার হতে পারে।

আপনি দেখতে পাবেন যে সমস্ত 3 টি ঘটকে সর্বাধিক পজিশনে সরিয়ে নেওয়া হবে, সাদা রঙের পরিবর্তে আপনি লাল দেখতে পাবেন। এটি কারণ 3 টি বর্ণের মধ্যে লাল রঙ সর্বাধিক বিশিষ্ট এবং তাই এই পরিস্থিতিতে আধিপত্য বিস্তার করে। তবে আপনি ফাংশনটি নিয়ে পরীক্ষা করতে পারবেন মানচিত্র () আরও বেশি বুদ্ধিমান ভারসাম্য তৈরি করার জন্য, এটি LED এর লাল অংশে চালিত করার আগে।

আরডুইনো সহ অডিও

এই বিভাগে আমরা শিখব কীভাবে একটি আরডুইনো সেটআপে বেসিক শব্দ এবং সংগীত যুক্ত করা যায়।

আমরা দেখতে পাব কীভাবে কোনও কাঙ্ক্ষিত ফ্রিকোয়েন্সি সহ কোনও সংযুক্ত স্পিকারে একটি সিগন্যাল স্যুইচ করা যায়।

আরও সুনির্দিষ্ট হওয়ার জন্য, একটি মাঝারি একটি নোট চেষ্টা করা হবে, এটি একটি 440 হার্জ ফ্রিকোয়েন্সি নোট।

এটি করার জন্য আমরা কেবল একটি মাঝামাঝি একটি নোট খেলব এবং বর্গাকার তরঙ্গ সহ সাইন ওয়েভ সিগন্যালটি অনুকূল করব।

এছাড়াও, সূত্রের মামলা করে একটি লাউডস্পিকার যে পরিমাণ সময় থাকতে পারে তা আমরা গণনা করব:

টাইমডেলি = 1 সেকেন্ড / 2 এক্স টোন ফ্রিকোয়েন্সি।

টাইমডেলি = 1 সেকেন্ড / 2 এক্স 440

টাইমডেলি = 1136 মাইক্রোসেকেন্ড

৪.১ আসুন, আরডুইনো বোর্ড হুক আপ করি

আরডিনোতে সাউন্ড এফেক্ট ব্যবহার করা

৪.২ একটি সাধারণ নোট যোগ করা

আমরা ইতিমধ্যে ফাংশন সম্পর্কে আলোচনা করেছি বিলম্ব () ইউনিটটি যেখানে মিলি সেকেন্ডে রয়েছে (সেকেন্ড / 1000), তবে আপনি আরও একটি ফাংশন পাবেন _ _ + _ | যেখানে ইউনিটটি মাইক্রোসেকেন্ডে রয়েছে (মিলিসেকেন্ড / 1000)।

বর্তমান সেটআপের জন্য আমরা স্পিকারের সাথে সংযুক্ত নির্বাচিত পিনে + 5V চালু / বন্ধ করতে একটি কোড প্রোগ্রাম করি, প্রতি সেকেন্ডে 440 ডাল হারে।

প্রত্যাহার করুন, শেষ আলোচনায় আমরা উদ্দেশ্যে করা অডিও নোটের জন্য 1136 মাইক্রোসেকেন্ডের মান নির্ধারণ করেছি।

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

const int kPinButton1 = 2
const int kPinButton2 = 3
const int kPinLed = 9
void setup()
{
pinMode(kPinButton1, INPUT)
pinMode(kPinButton2, INPUT)
pinMode(kPinLed, OUTPUT)
digitalWrite(kPinButton1, HIGH) // turn on pullup resistor
digitalWrite(kPinButton2, HIGH) // turn on pullup resistor
}
int ledBrightness = 128
void loop()
{
if(digitalRead(kPinButton1) == LOW){
ledBrightness--
}
else if(digitalRead(kPinButton2) == LOW){
ledBrightness++
}
ledBrightness = constrain(ledBrightness, 0, 255)
analogWrite(kPinLed, ledBrightness)
delay(20)
}

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

কোড থেকে আমরা বুঝতে পেরেছি যে আরডুইনোতে বেশ কয়েকটি সংহত ফাংশন অন্তর্ভুক্ত রয়েছে যা সংগীত গঠনে অতিরিক্ত অবদান রাখে।

প্রথম এক স্বন () যা তৃতীয় alচ্ছিক উপাদান সহ 2 টি উপাদানের সাথে কাজ করে, হিসাবে মনোনীত স্বন (পিন, ফ্রিকোয়েন্সি, সময়কাল)। বা স্বন (পিন, ফ্রিকোয়েন্সি)

উভয়ই আপনার দ্বারা নির্ধারিত সময়ের সাথে সম্পর্কিত কার্যকর করার জন্য মনোনীত হয়।

কোনও সময়সীমার অভাবে, কল না হওয়া পর্যন্ত সংগীত বাজতে থাকবে স্বন () আবার মৃত্যুদন্ড কার্যকর করা হয় অথবা আপনি মৃত্যুদণ্ড কার্যকর না করা পর্যন্ত একটি না ().

আপনি প্রয়োগ করছেন এমন একমাত্র মৌলিক জিনিস যদি সঙ্গীত বাজানো হয় তবে ক্ষেত্রে বিলম্বের ক্রিয়াটি ব্যবহার করে এটি করা দরকার।

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

পরবর্তী ফাংশন একটি না () একটি একক প্যারামিটার পরিচালনা করে এবং একটি নির্দিষ্ট বরাদ্দ পিনে নির্বাচিত টোনটি থামায়।

একটি অদ্ভুত সতর্কতা: যে কোনও সময় স্বন () ফাংশনটি বাস্তবায়িত হয়েছে, পিন 3 এবং 11-এ PWM ফাংশনটি অপারেটিং বন্ধ করবে।

সুতরাং যখনই প্রোগ্রামটিতে স্পিকার সংযুক্তি ব্যবহার করা হবে তখন স্পিকারের জন্য উল্লিখিত পিনটি ব্যবহার না করার বিষয়টি নিশ্চিত করুন, পরিবর্তে স্পিকার সংযুক্তির জন্য কিছু অন্যান্য পিন ব্যবহার করে দেখুন।

ঠিক আছে তাই এখানে একটি স্পিকারে সংগীত প্রয়োগের জন্য প্রোগ্রাম, যদিও এটি আসল সংগীত নয় বরং ভিত্তি স্কেল সি নোট।

ledBrightness = constrain(ledBrightness, 0, 255)
25 analogWrite(kPinLed, ledBrightness)
26 delay(20)

উপরের কোডটিতে আপনি হয়ত নতুন কিছু লক্ষ্য করেছেন এবং এটি # নির্দিষ্ট

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

যখনই এটি কোনও স্থানের আগে প্রথম জিনিসটি খুঁজে পায়, এটি এটিকে লাইনের অবশিষ্ট অংশ (ম্যাক্রোস নামে পরিচিত) দিয়ে প্রতিস্থাপন করে।

কম্পিউটার এই দেখায় তাই এই উদাহরণের মধ্যে নোট_ই 4 এটি দ্রুত 330 পরিমাণের সাথে এটি প্রতিস্থাপন করে।

আরও নোট এবং কাস্টমাইজেশনের জন্য আপনি নিজের ইউএসবি স্টিকের কোনও ফাইল উল্লেখ করতে পারেন পিচস.চ , যেখানে বেশিরভাগ ফ্রিকোয়েন্সি আপনার পছন্দ হিসাবে খুঁজে পেতে পারে।

৪.৪ ফাংশন সহ সংগীত

উপরের কোডটি দেখতে দুর্দান্ত দেখাচ্ছে, তবে মনে হচ্ছে অনেকগুলি পুনরাবৃত্তি রয়েছে, এই পুনরাবৃত্তিগুলি ছোট করার জন্য কোনও পদ্ধতি থাকা উচিত, তাই না?

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

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

ফলস্বরূপ, নির্দিষ্ট ফাংশনের নামটি একটি খোলা প্রথম বন্ধনী পায় '(' কমা দ্বারা পৃথক পরামিতিগুলির একটি তালিকা অনুসরণ করে।

প্রতিটি প্যারামিটার একটি নামের সাথে তার ধরণ এবং অবশেষে একটি কাছাকাছিটি অর্জন করে ')' প্রথম বন্ধন

এই পরামিতিগুলি ভেরিয়েবল আকারে ফাংশনের মধ্যে প্রয়োগ করা যেতে পারে।

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

আমরা আমাদের পূর্ববর্তী কোডে এই ফাংশনগুলি প্রয়োগ করি এবং নীচের প্রোগ্রামটি পাই, শেষ লাইনগুলি দেখুন:

ledBrightness = constrain(ledBrightness, 0, 255)

কোনও প্রোগ্রাম বোঝার পক্ষে সহজ করার জন্য কার্যাদি অত্যন্ত কার্যকর হতে পারে।

নিম্নলিখিতটি একটি উদাহরণ যেখানে আমরা দুটি অ্যারে ব্যবহার করে যে টোনটি খেলতে চাই তা নির্দিষ্ট করতে সক্ষম হয়েছি। নোট ধরে রাখার জন্য একটি অ্যারে, অন্যটি বীট ধরে রাখতে।

{
if(value > max){
value = max
}
if(value value = min
}
return value
}

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

অনুচ্ছেদ 5

তাপমাত্রা পরিমাপ

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

5.1 সিরিয়াল মনিটর

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

আরডুইনোর একটি বৈশিষ্ট্য রয়েছে যা এটি কম্পিউটারের সাথে 'টক ব্যাক' করতে সক্ষম করে। আপনি লক্ষ করতে পারেন যে পিন0 এবং পিন 1 একে অপরের পাশে আরএক্সকে একটি টিএক্স হিসাবে চিহ্নিত করা হয়েছে। এই পিনগুলি আসলে আরডুইনোর মধ্যে একটি পৃথক আইসি দ্বারা ট্র্যাক করা হয় যা এটি পিসিতে প্লাগ করার সময় ইউএসবি কেবলটি জুড়ে পড়তে তাদের আপগ্রেড করে।

নীচের বিভাগটি একটি পূর্ণাঙ্গ প্রোগ্রাম দেখায়, দয়া করে এটি যান তবে আমরা কোডের পরে নতুন এন্ট্রিগুলি সম্পর্কে শিখব। এই কোডটি প্রকাশিত বিভাগ ২.২ এর সমান, এটি কী কোড করে দেওয়া হয়েছে তা শনাক্ত করার জন্য আমাদের অতিরিক্ত কিছু ডেটা অন্তর্ভুক্ত করা ব্যতীত।

ledBrightness = constrain(ledBrightness, 0, 255)

আপনি এখানে দুটি নতুন জিনিস সনাক্ত করতে পারেন, এর একটি নতুন লাইন সেটআপ () ফাংশন

ledBrightness to be within the range of 0 and 255

এই লাইনটি কেবল ব্যবহারের প্রয়োজনীয়তা প্রকাশ করে সিরিয়াল 1 9600 বাউড সহ এটি প্রয়োগ করার কোড। (এখানে সিরিয়াল বোঝায় বিটস একের পর এক প্রেরণ করা হয়েছে, এবং বাউডের অর্থ এটি যে হারে প্রেরণ করা হয়)। এই বাউডের মান এবং সিরিয়াল মনিটরের অভ্যন্তরের একটি (আমরা এটি পরে শিখব) অবশ্যই সমান হতে হবে, না হলে সিরিয়াল মনিটরের ডেটা আবর্জনা দেখাবে। স্ট্যান্ডার্ড হিসাবে 9600 ব্যবহার করা আরও সুবিধাজনক হয়ে ওঠে।

দ্বিতীয় নতুন এন্ট্রি নিম্নরূপ:

analogWrite

এখানে দ্বিতীয় লাইনটি বোঝায় যে সিরিয়াল বন্দর থেকে পরবর্তী জিনিসগুলি পরবর্তী লাইনে শুরু হবে। এভাবেই প্রথম লাইনটি মুষ্টি রেখার থেকে আলাদা।

আপনি যে আরও একটি জিনিস দেখতে পাচ্ছেন তা হ'ল উদ্ধৃতি (')। এটি স্ট্রিং হিসাবে পরিচিত, যা এখানে কেবল ধ্রুবকের মতো ব্যবহৃত হবে, কারণ এই বিষয়ে আরও আলোচনা খুব বিস্তৃত এবং সুযোগের বাইরেও হতে পারে।

ঠিক আছে, আমরা এখন আরডুইনোতে উপরের কোডটি আপলোড করতে পারি এবং কী হয় তা দেখুন।

কি, উফ কিছুই ঘটেনি বলে মনে হচ্ছে, আরডুইনো পিন # 13 এলইডি জ্বলজ্বল করে থামল, যখন টিএক্স এলইডি জ্বলজ্বলে থাকল।

ঠিক আছে, কারণ সিরিয়াল মনিটরের উইন্ডোটি এখনও ঠিক হয়নি।

উপরের মত আপনার আইডিইতে সিরিয়াল মনিটর বক্সে ক্লিক করতে হবে। ডানদিকে নীচে অবস্থিত বাড রেটটি পরীক্ষা করতে ভুলবেন না, ডিফল্টরূপে এটি 9600 হওয়া উচিত, এবং কোডটির সাথে মিলবে। এটি নিশ্চিত না হলে 9600 নির্বাচন করুন select

নিম্নলিখিত ভিডিও ক্লিপটি কীভাবে এটি করা হয় তা ব্যাখ্যা করে।

https://youtu.be/ENg8CUyXm10

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

আমরা তাপমাত্রা সংবেদক হিসাবে আইসি টিএমপি 36 ব্যবহার করব, যার পরিধি -40 থেকে 150 ডিগ্রি সেলসিয়াস রয়েছে।

সেটআপটি নীচে দেখা যাবে:

তাপমাত্রা পরিমাপের জন্য আরডুইনো সহ টিএমপি 36

নিম্নলিখিত কোড টিএমপি 36 সেন্সর থেকে আউটপুট পড়ে এবং আইডির সিরিয়াল মনিটরে প্রেরণ করে তাপমাত্রা পরিমাপ শুরু করবে।

const int kPinPot = A0
const int kPinLed = 9
void setup()
{
pinMode(kPinPot, INPUT)
pinMode(kPinLed, OUTPUT)
}
void loop()
{
int ledBrightness
int sensorValue = 0
sensorValue = analogRead(kPinPot)
ledBrightness = map(sensorValue, 0, 1023, 0, 255)
analogWrite(kPinLed, ledBrightness)
}

উপরে থেকে কোডটি বুঝতে পারি।

kPinPot

এখানে আপনি দেখতে পারেন যে আমরা পরিবর্তনশীল প্রকারটি অন্তর্ভুক্ত করেছি ভাসা.

এটি একমাত্র পরিবর্তনশীল প্রকার যা পূর্ণসংখ্যার সংখ্যা (দশমিক বা ভগ্নাংশের অংশ ছাড়াই সংখ্যা) ব্যতীত সমস্ত কিছু সঞ্চয় করে features

ফ্লোট ভেরিয়েবলের যথার্থতা 6 থেকে 7 ডিজিট পর্যন্ত হতে পারে।

সংলগ্ন কোড ledBrightness = map(sensorValue, 0, 1023, 0, 255) আমাদের নিজস্ব ফাংশন যা গাণিতিকভাবে টিএমপি 36 সেন্সর থেকে সংবেদিত ভোল্টেজ পার্থক্যটি ডিগ্রি সেলসিয়াসে রূপান্তরিত করে।

analogueRead

কোডগুলির পরবর্তী বিভাগে, শব্দটি | _ _ _ _ | 1 থেকে 1023 এর মধ্যে একটি চিত্র ফিরিয়ে দেওয়ার জন্য নির্ধারিত হয়েছে, আমাদের পড়াটি 5 দ্বারা গুণিত করে এবং পরে এটি 1024 দিয়ে ভাগ করে সেন্সর থেকে ভোল্টেজ মূল্যায়ন করা সম্ভব হয়ে যায়।

সেন্সর টিএমপি 36 একটি 0 ডিগ্রি সেলসিয়াসে 0.5 ভি উত্পাদন করার জন্য নির্দিষ্ট করা হয় এবং পরবর্তীকালে ডিগ্রি সেলসিয়াসে প্রতিটি একক বৃদ্ধির জন্য 10 এমভি উত্পন্ন করে।

এখানে হিসাবের মধ্য দিয়ে আমরা উত্পন্ন করতে সক্ষম হলাম:

আরডুইনো তাপমাত্রা ক্রমাঙ্কন

আপনি আপনার প্রথম ফাংশন হিসাবে বিবেচনা করতে পারেন যা কিছু মান দেয় (মনে রাখবেন যে এখনও অবধি সমস্ত ফাংশন কোনও ধরণের মান দেয়নি যেহেতু তারা টাইপ হয়েছে শূন্য )।

আপনি বুঝতে পারেন যে কোনও ফাংশন থেকে মান পেতে হলে আপনাকে কেবল যুক্ত করতে হবে প্রত্যাবর্তন আপনি ফিরে আসতে চান পছন্দসই নম্বর অনুসরণ করুন।

আমরা যখন বলি প্রত্যাবর্তন এর অর্থ এটি যখনই ডাকা হয় তখন ফাংশনটি কোনও প্রতিক্রিয়া বা জবাব দেয়, যা কোনও চলকটিতে প্রয়োগ করা যেতে পারে।

এটি যখন সিরিয়াল মনিটরে প্রেরণ করা হয় তখন পঠনটি ফারেনহাইটের মাধ্যমে রূপান্তরিত হয় রূপান্তর করুন ()।

const int kPinPot = A0
const int kPinLed = 9
void setup()
{
pinMode(kPinLed, OUTPUT)
}
void loop()
{
int sensorValue
sensorValue = analogRead(kPinPot)
digitalWrite(kPinLed, HIGH)
delay(sensorValue)
digitalWrite(kPinLed, LOW)
delay(sensorValue)
}

এই ফাংশনটি সেলসিয়াস পরিসীমাটি তুলে ধরে এটিকে ফারেনহাইটে রূপান্তরিত করে।

ফারেনহাইট সেলসিয়াসে রূপান্তর করার জন্য আমরা সূত্রটি বাস্তবায়ন করি ফারেনহাইট = 9 / 5 (সেলসিয়াস) + 32।

5.3 একটি এলসিডি ইন্টারফেস করা

এখন আসুন কীভাবে ইন্টারফেস বা সংযুক্ত করতে হয় তা অধ্যয়ন করি LCD প্রদর্শন প্রয়োজনীয় আউটপুটগুলির জন্য ভিজ্যুয়াল প্রদর্শন পাওয়ার জন্য আরডুইনো সহ

আমাদের অ্যাপ্লিকেশনটিতে আমরা একটি 84x48 গ্রাফিকাল এলসিডি, একটি 84 পিক্সেল বা ডট অনুভূমিকভাবে, এবং 48 পিক্সেল উল্লম্ব রেজোলিউশন নিয়োগ করতে চলেছি। যেহেতু ডেডিকেটেড কন্ট্রোলার সমস্ত এলসিডি-র জন্য অপরিহার্য হয়ে ওঠে, তাই বর্তমান ডিভাইসটি একটিকে পিসিডি 8544 নিয়ামক আকারে অন্তর্ভুক্ত করে।

এই টিউটোরিয়ালে আমরা উপরের নির্দিষ্ট এলসিডি মডিউলটিকে আরডুইনোর সাথে সংযুক্ত করব এবং প্রদর্শনটিতে টেক্সট বার্তা তৈরি করতে নির্দিষ্ট রুটিন প্রয়োগ করব।

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

আপনি এলসিডি মডিউল থেকে 8 টি পিনআউটও দেখতে পাবেন, পিনআউট স্পেসিফিকেশন নিম্নলিখিত টেবিল থেকে অধ্যয়ন করা যেতে পারে:

এলসিডি পিনআউট বিশদ

এখন আসুন আমরা কীভাবে আমাদের আরডিনো দিয়ে এলসিডি এবং প্রাসঙ্গিক পরামিতিগুলি সংযুক্ত করতে পারি তা দেখুন। নীচের দেখানো চিত্রগুলিতে বিশদটি কল্পনা করা যেতে পারে:

আরডুইনো বেসিক লার্নিং

5.4 এলসিডিতে যোগাযোগ করা

যদিও আরডুইনো থেকে এলসিডির সাথে আলাপচারিতার জন্য বিস্তৃত কোডগুলি লেখা সম্ভব, আমরা বরং লাইব্রেরিগুলি ব্যবহার করে কীভাবে এটি করব তা শিখব।

গ্রন্থাগারগুলিতে কোডগুলির একটি ভাণ্ডার রয়েছে যা একটি নির্বাচিত আরডুইনো প্রোগ্রামের জন্য দ্রুত প্রয়োগ করা যেতে পারে।

এটি জটিল কোডিংয়ের কাজটি না করেই অনায়াসে একটি ফাংশন কল করতে ব্যবহারকারীকে সক্ষম করে।

5.4.1 লাইব্রেরি ইনস্টল করুন

এর জন্য আপনাকে আপনার কম্পিউটারে আরডুইনো আইডিইতে লাইব্রেরি নামে একটি ডিরেক্টরি তৈরি করতে হবে, যেমনটি ব্যাখ্যা করা হয়েছে এখানে

5.4.2 এলসিডি অপারেশনগুলি কার্যকর করা

আমাদের পূর্ববর্তী পদ্ধতির মতো, আমরা প্রথমে পুরো কোডটি চেকআউট করব এবং তারপরে স্বতন্ত্র লাইনের বিশদটি বোঝার চেষ্টা করব।

const int kPinPot = A0
const int kPinLed = 9
void setup()
{
pinMode(kPinLed, OUTPUT)
}
long lastTime = 0
int ledValue = LOW
void loop()
{
int sensorValue
sensorValue = analogRead(kPinPot)
if(millis() > lastTime + sensorValue){
if(ledValue == LOW){
ledValue = HIGH
}
else{
ledValue = LOW
}
lastTime = millis()
digitalWrite(kPinLed, ledValue)
}
}

লাইনে কোডটি রয়েছে _ _ + _ |

প্রোগ্রাম # সংকলন চলাকালীন কোড # অন্তর্ভুক্ত পিসিকে নির্দেশিত ফাইলটি পিকআপ করার জন্য এবং # অন্তর্ভুক্ত উপাদানটিকে ফাইলের বিষয়বস্তুগুলির সাথে প্রতিস্থাপনের নির্দেশ দেয়।

# অন্তর্ভুক্ত উপাদানটি এমন কোণ বন্ধনী ধারণ করতে পারে যা লাইব্রেরি ডিরেক্টরিতে সন্ধানের ইঙ্গিত দেয়, বিকল্পভাবে এটিতে উদ্ধৃতিও থাকতে পারে যা একই ডিরেক্টরিতে প্রোগ্রামটি অবস্থিত এটি অনুসন্ধান করে।

কোডের পরবর্তী লাইনগুলি এলসিডি পিনআউটগুলি প্রকাশ করে এবং তারপরে আমরা ভেরিয়েবলের একটি নতুন ফর্মটি লিখি:

long lastTime = 0

এখানে আমরা lcd নামের সাথে একটি পরিবর্তনশীল প্রকাশ করছি যাতে PCD8544 টাইপ থাকে এবং পিসিটিকে আরডুইনোর সাথে যুক্ত তার পিনআউটগুলি রেজিস্ট্রেশন করার নির্দেশ দেয়।

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

const int kPinPot1 = A0
const int kPinPot2 = A1
const int kPinPot3 = A2
const int kPinLed_R = 6
const int kPinLed_G = 10
const int kPinLed_B = 11
void setup()
{
pinMode(kPinLed_R, OUTPUT)
pinMode(kPinLed_G, OUTPUT)
pinMode(kPinLed_B, OUTPUT)
}
void loop()
{
int potValue
int ledValue
potValue = analogRead(kPinPot1)
ledValue = map(potValue, 0, 1023, 0, 255)
analogWrite(kPinLed_R, ledValue)
potValue = analogRead(kPinPot2)
ledValue = map(potValue, 0, 1023, 0, 255)
analogWrite(kPinLed_G, ledValue)
potValue = analogRead(kPinPot3)
ledValue = map(potValue, 0, 1023, 0, 255)
analogWrite(kPinLed_B, ledValue)
}

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

এটি সেই কৌশলটির সাথে বেশ অভিন্ন দেখায় যা আমরা সিরিয়াল মনিটরের মাধ্যমে বার্তা প্রেরণ করেছি। কোড ব্যবহারের মধ্যে পার্থক্য কেবল const int kPinSpeaker = 9
const int k_timeDelay = 1136
void setup()
{
pinMode(kPinSpeaker, OUTPUT)
}
void loop()
{
digitalWrite(kPinSpeaker, HIGH)
delayMicroseconds(k_timeDelay)
digitalWrite(kPinSpeaker, LOW)
delayMicroseconds(k_timeDelay)
}
| সিরিয়াল.প্রিন্টের পরিবর্তে।

কোড পরবর্তী ব্লক আসলে পুনরাবৃত্তি বলা হয়।

#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
const int kPinSpeaker = 9
void setup()
{
pinMode(kPinSpeaker, OUTPUT)
}
void loop()
{
tone(kPinSpeaker, NOTE_C4, 500)
delay(500)
tone(kPinSpeaker, NOTE_D4, 500)
delay(500)
tone(kPinSpeaker, NOTE_E4, 500)
delay(500)
tone(kPinSpeaker, NOTE_F4, 500)
delay(500)
tone(kPinSpeaker, NOTE_G4, 500)
delay(500)
tone(kPinSpeaker, NOTE_A4, 500)
delay(500)
tone(kPinSpeaker, NOTE_B4, 500)
delay(500)
tone(kPinSpeaker, NOTE_C5, 500)
delay(500)
noTone(kPinSpeaker)
delay(2000)
}

এই লাইনটি ব্যবহার করছে | _ _ _ _ | আমরা কার্সারটি LCD ডিসপ্লে ধরে 1 ম সারির একেবারে বাম দিকে 0 তম কলামে স্থির করি।

পরবর্তী লাইনে একটি শর্টকাট নিযুক্ত করা হয়েছে: #define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
const int kPinSpeaker = 9
void setup()
{
pinMode(kPinSpeaker, OUTPUT)
}
void loop()
{
tone(kPinSpeaker, NOTE_C4, 500)
delay(500)
tone(kPinSpeaker, NOTE_D4, 500)
delay(500)
tone(kPinSpeaker, NOTE_E4, 500)
delay(500)
tone(kPinSpeaker, NOTE_F4, 500)
delay(500)
tone(kPinSpeaker, NOTE_G4, 500)
delay(500)
tone(kPinSpeaker, NOTE_A4, 500)
delay(500)
tone(kPinSpeaker, NOTE_B4, 500)
delay(500)
tone(kPinSpeaker, NOTE_C5, 500)
delay(500)
noTone(kPinSpeaker)
delay(2000)
}
void ourTone(int freq, int duration)
{
tone(kPinSpeaker, freq, duration)
delay(duration)
}

আপনি যদি স্মরণ করেন তবে আমরা | _ _ + _ | এর সাথে কাজ করেছি আমাদের আগের কোডগুলিতে আমরা কোডগুলির মাধ্যমেও এখানে একই প্রয়োগ করতে পারতাম:

#include 'pitches.h'
int kPinSpeaker = 9
#define NUM_NOTES 15
const int notes[NUM_NOTES] = // a 0 represents a rest
{
NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4,
NOTE_A4, NOTE_A4, NOTE_G4, NOTE_F4,
NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4,
NOTE_D4, NOTE_C4, 0
}
const int beats[NUM_NOTES] = {
1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }
const int beat_length = 300
void setup()
{
pinMode(kPinSpeaker, OUTPUT)
}
void loop()
{
for (int i = 0 i if (notes[i] == 0) {
delay(beats[i] * beat_length) // rest
}
else {
ourTone(notes[i], beats[i] * beat_length)
}
// pause between notes
noTone(kPinSpeaker)
delay(beat_length / 2)
}
}
void ourTone(int freq, int duration)
{
tone(kPinSpeaker, freq, duration)
delay(duration)
}

তবে এখানে মিলিসেকেন্ডে কোনও সময়কাল জড়িত না বলে এই কারণে আমরা কেবলমাত্র _ _ + _ | প্রেরণ করে এটি সম্পাদন করি const int kPinLed = 13
void setup()
{
pinMode(kPinLed, OUTPUT)
Serial.begin(9600)
}
int delayTime = 1000
void loop()
{
delayTime = delayTime - 100
if(delayTime <= 0){ // If it would have been zero or less, reset it.
delayTime = 1000
}
Serial.print('delayTime = ')
Serial.println(delayTime)
digitalWrite(kPinLed, HIGH)
delay(delayTime)
digitalWrite(kPinLed, LOW)
delay(delayTime)
}
এ সরাসরি কাজ করুন

5.5 পুরো জিনিস একত্রিত করা

ঠিক আছে, এখন এলসিডি তাপমাত্রা সার্কিট তৈরি করার জন্য আমরা উপরে শিখেছি সমস্ত কোডগুলি একত্রিত করি এবং এটি দেখতে কেমন তা দেখি:

Serial.begin(9600)

ফাংশনটির ব্যবহার বাদে উপরের প্রোগ্রামটিতে সবকিছু স্ট্যান্ডার্ড দেখায় সেট কার্সার () । এটি প্রদর্শনের কেন্দ্রে যতদূর সম্ভব পাঠ্য সারিবদ্ধ করার জন্য নিযুক্ত করা হয়েছে।

দুর্দান্ত! এবং সংশ্লেষ, আপনি কেবল নিজেরডুটি ব্যবহার করে আপনার নিজের এলসিডি তাপমাত্রা সূচকটি প্রোগ্রাম করেছেন।

ব্যবহারিক আরডুইনো অ্যাপ্লিকেশন

যেহেতু, এই মুহুর্তে আমরা বিভিন্ন প্রোগ্রামিং কৌশলগুলি বিস্তারিতভাবে কভার করেছি, এখন কয়েকটি কার্যকর ব্যবহারিক বাস্তবায়নের জন্য এগুলি প্রয়োগ করে এগুলি চালানোর সময় এসেছে time

আমরা সেন্সর দিয়ে শুরু করব এবং কয়েকটি নমুনা কোড সম্পাদন করে আর্দুইনোর সাথে সেন্সর ডিভাইসগুলি কীভাবে ব্যবহার করা যেতে পারে তা দেখব।

.1.১ সেন্সরগুলির পরিচিতি

এই টিউটোরিয়ালে আমরা আরডুইনোর সাথে বিভিন্ন ধরণের সেন্সর ব্যবহার করতে পারি regarding এর মধ্যে হালকা সেন্সর এলডিআর, চৌম্বকীয় হল এফেক্ট সেন্সর, টিল্ট সেন্সর, কম্পন সেন্সর, চাপ সংবেদক ইত্যাদি ডিভাইস অন্তর্ভুক্ত থাকতে পারে

আমরা ইন্টারফেসিং দিয়ে শুরু করব হালকা সেন্সর এলডিআর আরডুইনো সহ, আমি নিম্নলিখিত চিত্রটি দেখিয়েছি:

আরডুইনোর সাথে এলডিআর ব্যবহার করুন

যেমনটি আমরা সবাই জানি, এলডিআর হ'ল একটি হালকা নির্ভর রোধকারী যন্ত্র যার প্রতিরোধেরটি তার পৃষ্ঠের পরিবেষ্টনের ঘটনার তীব্রতার উপর নির্ভর করে।

আলোর তীব্রতা এলডিআর প্রতিরোধের পড়ার সাথে বিপরীতভাবে সমানুপাতিক।

এখানে আমরা শিখব কীভাবে দরকারী সম্পত্তিটি কার্যকর করার জন্য এই সম্পত্তিটি আরডুইনোর সাথে একীভূত করা যেতে পারে:

সম্পূর্ণ প্রোগ্রাম কোডটি নীচে দেওয়া হিসাবে ভিজ্যুয়ালাইজ করা যায়:

Serial.print('delayTime = ')
Serial.println(delayTime)

কোডটিতে ব্যবহৃত সমস্ত পরামিতিগুলি ইতিমধ্যে আমাদের কোর্সে আলোচনা করা হয়েছে যা আমরা এখনও শিখেছি। আপনি প্রাসঙ্গিক বিভাগগুলি উল্লেখ করে লাইনগুলি পরীক্ষা করতে পারেন।

মানগুলি এলোমেলোভাবে বেছে নেওয়া হয়েছিল, আপনি নিজের পছন্দ অনুসারে সহজেই পরিবর্তন করতে পারবেন।

কাত সেন্সর

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

এখন দেখা যাক কিভাবে টিল্ট সেন্সর ডিভাইস তারযুক্ত হতে পারে। নীচের চিত্রটি সম্পূর্ণ কনফিগারেশন সম্পর্কিত ধারণা দেয়:

আরডুইনোর সাথে ঝুঁকির সেন্সরকে ইন্টারফ্যাক করে

const int kPinTemp = A0
void setup()
{
Serial.begin(9600)
}
void loop()
{
float temperatureC = getTemperatureC()
Serial.print(temperatureC)
Serial.println(' degrees C')
// now convert to Fahrenheit
float temperatureF = convertToF(temperatureC)
Serial.print(temperatureF)
Serial.println(' degrees F')
delay(500)
}
float getTemperatureC()
{
int reading = analogRead(kPinTemp)
float voltage = (reading * 5.0) / 1024
// convert from 10 mv per degree with 500mV offset
// to degrees ((voltage - 500mV) * 100)
return (voltage - 0.5) * 100
}
float convertToF(float temperatureC)
{
return (temperatureC * 9.0 / 5.0) + 32.0
}

এই উদাহরণে ডিফল্ট পিন # 13 এলইডি টিল্ট ইন্ডিকেটর হিসাবে ব্যবহৃত হয়।

আপনি এখানে স্পষ্টতই পুল-আপ রেজিস্টারের অন্তর্ভুক্তি দেখতে পাচ্ছেন, আমরা বিভাগ ৩.১-এ যা করেছি তার মতোই similar সুতরাং LOW শব্দটি ইঙ্গিত দেয় যে ঝুঁকির ক্রিয়াটি ট্রিগার হয় না।

7.4 রিড স্যুইচ রিলে (ক্ষুদ্র চৌম্বক সক্রিয় রিলে)

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

এখানেও আমরা প্রতিক্রিয়ার ইঙ্গিত দেওয়ার জন্য পিন # 13 এলইডি ব্যবহার করি। আমাদের পূর্বের ব্যাখ্যা অনুসারে প্রয়োজন হলে আপনি এই পিন থেকে একটি বাহ্যিক LED সংযুক্ত করতে পারেন।

float temperatureC = getTemperatureC()

কোডের শর্তাবলী স্বীকৃত এবং স্ব-বর্ণনামূলক হওয়া উচিত।

7.5 কম্পন সেন্সর পাইজো ট্রান্সডুসার ব্যবহার করে

পরবর্তী নমুনা প্রোগ্রামে আমরা কীভাবে দেখব পাইজো ট্রান্সডুসার আরডুইনোর মাধ্যমে কোনও এলইডি আলোকিত করতে কম্পন সংবেদক হিসাবে ব্যবহৃত হতে পারে।

পাইজো উপাদানটি হ'ল এমন একটি ডিভাইস যা তার টার্মিনালগুলিতে যখন একটি ফ্রিকোয়েন্সি প্রয়োগ করা হয় তখন কম্পন বা দোলন উৎপন্ন করে। তবে একই পাইজো রিভার্স প্রসেসে ব্যবহার করা যেতে পারে বৈদ্যুতিক ডাল উত্পাদন তার শরীরে কম্পন প্রয়োগের প্রতিক্রিয়া হিসাবে। এই কম্পনটি নক-র আকারে হতে পারে বা পাইজো পৃষ্ঠার উপরে আঘাত করতে পারে।

নিম্নলিখিত চিত্রটিতে দেওয়া আছে হিসাবে আরডুইনো এবং একটি পাইজো উপাদান সেটআপ করুন

আরডুইনোর সাথে কম্পন সেন্সর হিসাবে পাইজো ব্যবহার করা

getTemperatureC()

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

এ 5 পিন নির্বাচন বাধ্যতামূলক নয়, আপনি আপনার পছন্দ অনুযায়ী এবং প্রোগ্রাম কোডে এটি মিলিয়ে অন্য কোনও অ্যানালগ ইনপুট নির্বাচন করতে পারেন।

আরডুইনো সহ সার্ভো মোটর ব্যবহার করা

একটি সার্ভো মোটর হ'ল এক প্রকারের ডিসি মোটর যা নির্দিষ্ট অ্যাপ্লিকেশনটির চাহিদা অনুযায়ী সুনির্দিষ্ট কোণে ঘোরানো যেতে পারে। মোটরের 180 ডিগ্রি সীমার মধ্যে সঠিক ঘূর্ণায়মান বা বাঁক কোণটি তৈরি করতে মোটরের প্রাসঙ্গিক ইনপুটগুলিতে গণনা করা কমান্ড প্রয়োগ করে এটি করা যেতে পারে।

সাধারণত একটি সার্ভো মোটরটিতে 3 টি তার বা ইনপুট থাকে। ধনাত্মক তারগুলি সাধারণত লাল রঙের হয়, নেতিবাচক বা স্থল তারের কালো হয়, যা কমান্ড তার বা সিগন্যালিং তারে সাধারণত সাদা বা হলুদ বর্ণের হয়।

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

নিম্নলিখিত উদাহরণটি আরডুইনোর মাধ্যমে সারো মোটর নিয়ন্ত্রণ প্রয়োগের জন্য আমাদের প্রাথমিক সেটআপ প্রোগ্রামটি দেখায়:

আরডুইনো সার্ভো মোটর নিয়ন্ত্রণ

কোডটি নীচে দেওয়া হল:

float getTemperatureC()
{
int reading = analogRead(kPinTemp)
float voltage = (reading * 5.0) / 1024
// convert from 10 mv per degree with 500mV offset
// to degrees ((voltage - 500mV) * 100)
return (voltage - 0.5) * 100
}

আমরা এখানে বেশ কয়েকটি নতুন এন্ট্রি দেখতে পাচ্ছি। সার্ভোর সংযুক্ত তারটি যেটিকে পিনটি নির্ধারিত করা হয়েছে তা জানায় One অন্যটি হ'ল কোড যা পিনটি সারোতে ঘোরার কোণ নির্ধারণের জন্য 0 এবং 180 এর মধ্যে একটি মান সরবরাহ করে।

উপসংহার

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

আশাকরি আরও তথ্য এখানে সময়ে সময়ে আপডেট হতে পারে, যখনই এটি উপলব্ধ।

এর মধ্যে আপনার প্রোগ্রামিং কোর্সটি উপভোগ করুন, আপনাকে শুভ আরডুইনিং !!




পূর্ববর্তী: এমকিউ -3 সেন্সর মডিউল ব্যবহার করে অ্যালকোহল ডিটেক্টর মিটার সার্কিট পরবর্তী: সেলফোন নিয়ন্ত্রিত কুকুর ফিডার সার্কিট