কোড অনুসন্ধান

পাঠ ৯৮-৭: আরডুইনো এবং ৫টি এলইডি ব্যবহার করে হাঁটার আলো

পাঠ ৯৮-৭: আরডুইনো এবং ৫টি এলইডি ব্যবহার করে হাঁটার আলো

একটি ওয়াকিং লাইট (যাকে "চেজিং" বা "নাইট রাইডার" লাইটও বলা হয়) ক্লাসিক বিগিনার আরডুইনো প্রকল্পগুলোর একটি — এবং যথার্থ কারণেই। এটি আপনাকে শেখায় কীভাবে ক্রমানুসারে একাধিক আউটপুট নিয়ন্ত্রণ করতে হয়, কীভাবে ইভেন্টের সময় নির্ধারণ করতে হয় এবং কীভাবে কারেন্ট-লিমিটিং রেজিস্টর সম্পর্কে চিন্তা করতে হয়, আর সেই সাথে এমন কিছু তৈরি করতে হয় যা দেখতে তৃপ্তিদায়ক। এই প্রকল্পে আপনি পাঁচটি LED আরডুইনোর সাথে সংযুক্ত করবেন এবং সেগুলো এমনভাবে প্রোগ্রাম করবেন যাতে প্রতিটি পালাক্রমে জ্বলে ওঠে, ফলে একটি একক আলো সারির পাশ দিয়ে "হেঁটে যাওয়ার" বিভ্রম তৈরি হয়।

5 leds on breadboard with resistor shown connected to Arduino UNO
5 leds on breadboard with resistor shown connected to Arduino UNO

একবার আপনি প্যাটার্নটি বুঝে গেলে, আপনি এটি অবাক করার মতো অনেক বাস্তব-জগতের নির্মাণে পুনর্ব্যবহার করতে পারেন:

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

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

ওয়াকিং লাইট কীভাবে কাজ করে

নীতিটি একটি একক LED জ্বালানোর মতোই — এটি কেবল পাঁচবার পুনরাবৃত্তি করা হয় (ভিডিওতে 30:47-এ)। প্রতিটি LED তার নিজস্ব কারেন্ট-লিমিটিং রেজিস্টরের মাধ্যমে তার নিজস্ব আরডুইনো পিনের সাথে সংযুক্ত, এবং সমস্ত রেজিস্টর একটি সাধারণ গ্রাউন্ড রেল শেয়ার করে। এরপর স্কেচটি একটি পিন HIGH করে, অপেক্ষা করে, এটিকে LOW করে, অপেক্ষা করে এবং পরবর্তী পিনে চলে যায়। যেহেতু একবারে কেবল একটি LED জ্বলে থাকে, চোখ ক্রমটিকে গতি হিসেবে পড়ে।

দুটি টাইমিং মানই এই ইফেক্টকে তার চরিত্র দেয়। অন টাইম নিয়ন্ত্রণ করে প্রতিটি LED কতক্ষণ জ্বলে থাকে, এবং অফ টাইম নিয়ন্ত্রণ করে পরবর্তী LED জ্বলার আগের বিরতি। একটি ছোট অন টাইমের সাথে একটি দীর্ঘ অফ টাইম দ্রুত ভ্রমণকারী একটি একক বিন্দু তৈরি করে; একটি দীর্ঘ অন টাইমের সাথে একটি ছোট অফ টাইম আরও মসৃণ, আরও ধারাবাহিক সুইপ তৈরি করে (ভিডিওতে 35:00-এ)।

হার্ডওয়্যার এবং উপাদান

  • 1 × আরডুইনো বোর্ড (Uno, Nano, বা অনুরূপ)
  • 5 × LED (যেকোনো রঙ; রঙ মিশ্রিত করলে ইফেক্টটি পড়া সহজ হয়)
  • 5 × রেজিস্টর — 300 Ω থেকে 1 kΩ ভালো কাজ করে
  • 1 × ব্রেডবোর্ড
  • জাম্পার তার
  • পাওয়ারের জন্য USB কেবল বা ব্যাটারি প্যাক

আপনি যদি পরে একটি পুশ-বাটন ভ্যারিয়েন্ট যোগ করতে চান, তাহলে আপনার একটি মোমেন্টারি পুশ বাটন এবং দুটি অতিরিক্ত জাম্পার তারও প্রয়োজন হবে।

রেজিস্টর মান নির্বাচন

একটি LED-এর ফরওয়ার্ড ভোল্টেজ প্রায় 2 V এবং পূর্ণ উজ্জ্বলতার জন্য প্রায় 10 mA চায় (ভিডিওতে 03:49-এ)। 5 V সরবরাহের সাথে, রেজিস্টরকে অবশিষ্ট 3 V ড্রপ করতে হবে। ওহমের সূত্র প্রয়োগ করে, R = V / I = 3 V / 0.01 A = 300 Ω। বাস্তবে 300 Ω থেকে প্রায় 1 kΩ পর্যন্ত যেকোনো কিছু কাজ করবে — যত বেশি রেজিস্ট্যান্স, তত ম্লান LED, কিন্তু তত নিরাপদ এবং আরও দক্ষ সার্কিট (ভিডিওতে 05:33-এ)।

Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button

ওয়্যারিং গাইড

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino

পাঁচটি LED ব্রেডবোর্ডে ঢোকান যাতে তাদের অ্যানোড (লম্বা পা) একই দিকে মুখ করে থাকে। প্রতিটি ক্যাথোড (ছোট, সমতল-পার্শ্বযুক্ত পা) তার নিজস্ব রেজিস্টরের সাথে সংযুক্ত করুন, এবং পাঁচটি রেজিস্টরের দূরের প্রান্ত একটি সাধারণ গ্রাউন্ড রেলে যুক্ত করুন। তারপর প্রতিটি অ্যানোড থেকে একটি জাম্পার একটি আরডুইনো পিনে চালান।

এই নির্মাণে LEDগুলো পিন 3, 4, 5, 6 এবং 7-এ বরাদ্দ করা হয়েছে (ভিডিওতে 31:29-এ)। পিন নম্বরগুলো স্কেচের শীর্ষে সংজ্ঞায়িত করা হয়েছে, তাই আপনি যদি ভিন্ন বিন্যাস পছন্দ করেন তবে আপনাকে কেবল সেই পাঁচটি লাইন পরিবর্তন করতে হবে।

কোড ব্যাখ্যা

স্কেচটি ইচ্ছাকৃতভাবে সহজ যাতে একজন বিগিনার প্রতিটি লাইন অনুসরণ করতে পারে। আপনার নিজের সেটআপের জন্য কেবল একেবারে উপরের ব্লকটি সম্পাদনা করতে হবে।

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

পিন সংজ্ঞা। পাঁচটি const int লাইন প্রতিটি LED-কে একটি ভৌত আরডুইনো পিনে ম্যাপ করে। যেহেতু সেগুলো const হিসেবে ঘোষণা করা হয়েছে, প্রোগ্রামে পরে মানগুলো পরিবর্তন করা যাবে না — এটি একটি নিরাপত্তা অভ্যাস যা দুর্ঘটনাবশত পুনঃবরাদ্দ প্রতিরোধ করে। আপনি যদি আপনার LEDগুলো ভিন্ন পিনে সংযুক্ত করেন, এখানে নম্বরগুলো পরিবর্তন করুন এবং আর কিছু নয়।

onTime এবং offTime। এই দুটি ইন্টিজার প্রকল্পের একমাত্র "আচরণ" ভেরিয়েবল, এবং এগুলোই আপনি পরীক্ষা করতে চাইবেন:

  • onTime — প্রতিটি LED কতক্ষণ (মিলিসেকেন্ডে) জ্বলে থাকে। বড় মান প্রতিটি ধাপকে আরও ধীর এবং সুচিন্তিত মনে করায়।
  • offTime — একটি LED বন্ধ হওয়ার পর পরেরটি জ্বলার আগে বিরতি। ছোট মান আলোকে দ্রুত চলতে সাহায্য করে।

সমান, মাঝারি গতির ছোটার জন্য onTime = 200 এবং offTime = 200 চেষ্টা করুন, অথবা খুব দ্রুত, প্রায় ঝাপসা প্রভাবের জন্য onTime = 30 এবং offTime = 30 চেষ্টা করুন (ভিডিওতে 36:06 সময়ে)।

setup() ফাংশন একবার চলে এবং সহজভাবে পাঁচটি পিনকে OUTPUT মোডে সেট করে। এরপর loop() ফাংশন প্রতিটি LED-এর জন্য একই চার-ধাপের প্যাটার্ন পুনরাবৃত্তি করে: পিন HIGH করুন, onTime অপেক্ষা করুন, এটি LOW করুন, offTime অপেক্ষা করুন। যখন পঞ্চম LED শেষ হয়, লুপটি প্রথমটি থেকে আবার শুরু হয়, একটি অবিরাম হাঁটা তৈরি করে।

লাইভ প্রকল্প এবং প্রদর্শন

ডিফল্ট মানগুলির সাথে LED-গুলি একটি শিথিল গতিতে সারি বরাবর এগিয়ে চলে। onTime এবং offTime 200 ms-এ সেট করে স্কেচ আপলোড করলে একটি স্থির, সমান মিছিল পাওয়া যায়; উভয়কে 30 ms-এ নামিয়ে দিলে আলো সারির উপর দিয়ে এত দ্রুত ছুটে যায় যে অনুসরণ করা প্রায় অসম্ভব (ভিডিওতে 36:21 সময়ে)।

এটি কাজ করার পরে চেষ্টা করার জন্য দুটি দরকারী পরীক্ষা:

  • একটি স্বতন্ত্র ভ্রমণকারী বিন্দু তৈরি করতে অন টাইমকে অফ টাইমের চেয়ে ছোট করুন।
  • একটি নরম, ওভারল্যাপিং আভা তৈরি করতে অন টাইমকে অফ টাইমের চেয়ে দীর্ঘ করুন।

একই পাঁচ-LED তারের ব্যবস্থা পরবর্তী প্রকল্পে পুনরায় ব্যবহার করা হয়েছে, যেখানে একটি পুশ বাটন একবারে এক ধাপ করে আলো এগিয়ে নেয়। সেই বিল্ডটি Lesson 98-8: Walking Light with Push Button and LEDs with Arduino-এ আলোচনা করা হয়েছে।

যদি আপনি বাটনের পরিবর্তে একটি অ্যানালগ ইনপুট থেকে সারি চালাতে চান, তাহলে Lesson 98-9: LED Voltage Level Meter Using Arduino or walking light with potentiometer দেখুন।

আরও এগিয়ে নিয়ে যাওয়া

একবার মৌলিক হাঁটা কাজ করলে, একটি স্বাভাবিক পরবর্তী পদক্ষেপ হল শেষ LED থেকে প্রথমটিতে লাফানোর পরিবর্তে আলোকে পিছনে-সামনে বাউন্স করানো। এটি একটি বিশুদ্ধ কোড অনুশীলন — কোন অতিরিক্ত হার্ডওয়্যার নেই — এবং এটি লুপ এবং অ্যারে অনুশীলন করার একটি ভাল উপায়। আপনি এই প্রকল্পটি পুশ-বাটন সংস্করণের সাথে একত্রিত করে একটি ম্যানুয়ালি অ্যাডভান্সড ডিসপ্লেও তৈরি করতে পারেন।

এই ভিডিও থেকে সম্পর্কিত প্রকল্প

অধ্যায়

  • [00:00] দশটি LED প্রকল্পের সংক্ষিপ্ত বিবরণ
  • [01:22] Arduino ধাপে ধাপে কোর্সের পরিচিতি
  • [02:29] LED কী এবং এর পিন কীভাবে চিহ্নিত করবেন
  • [03:49] কারেন্ট-লিমিটিং রেজিস্টর গণনা
  • [30:47] ওয়াকিং লাইট প্রকল্পের পরিচিতি
  • [31:06] পাঁচটি LED-এর জন্য তারের ডায়াগ্রাম
  • [32:52] ওয়াকিং লাইট কোডের ব্যাখ্যা
  • [34:39] প্রদর্শন এবং টাইমিং মান পরিবর্তন
  • [36:41] পুশ বাটন দিয়ে আলো এগিয়ে নেওয়া (আলাদা টিউটোরিয়াল)
  • [42:25] পটেনশিওমিটার দিয়ে LED ভোল্টেজ বার (আলাদা টিউটোরিয়াল)
  • [49:25] Arduino ট্রাফিক লাইট (আলাদা টিউটোরিয়াল)

ছবি

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
আরডুইনো UNO-এর সাথে সংযুক্ত রেজিস্টরসহ ব্রেডবোর্ডে ৫টি এলইডি
আরডুইনো UNO-এর সাথে সংযুক্ত রেজিস্টরসহ ব্রেডবোর্ডে ৫টি এলইডি
939-Lessson 98-LED-7: Arduino code walking LED light
ভাষা: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

আর্ডুইনো লাইব্রেরি (জিপ)

ব্যবহারকারীর ম্যানুয়াল