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

পাঠ ৯৮-৮: আর্ডুইনো সহ পুশ বাটন এবং এলইডি দিয়ে হাঁটার আলো

পাঠ ৯৮-৮: আর্ডুইনো সহ পুশ বাটন এবং এলইডি দিয়ে হাঁটার আলো

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

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

একবার আপনি এই প্যাটার্নটি বুঝতে পারলে, একই লজিক বিপুল সংখ্যক বাস্তব প্রকল্পে শক্তি যোগায়। এখানে কয়েকটি ব্যবহারিক ধারণা রয়েছে যা আপনি এটি দিয়ে তৈরি করতে পারেন:

  • একটি ডিভাইসে একটি মেনু নির্বাচক যেখানে প্রতিটি চাপ পরবর্তী বিকল্পটি হাইলাইট করে।
  • একটি মেশিন বা প্রক্রিয়ার জন্য একটি ক্রমিক ধাপ সূচক (ধাপ 1, ধাপ 2, ধাপ 3...)।
  • একটি স্কোর বা লেভেল ডিসপ্লে যা আপনি একটি বোতাম দিয়ে ম্যানুয়ালি এগিয়ে নেন।
  • একটি লাইটিং কন্ট্রোলারের জন্য একটি "পরবর্তী চ্যানেল" বা "পরবর্তী মোড" সূচক।
  • একটি সাধারণ গেম বা কুইজ বাজার যেখানে খেলোয়াড়রা পালা করে পরবর্তী বাতি জ্বালায়।
  • একটি রিলে বা লোড সিকোয়েন্সার যেখানে প্রতিটি চাপ ক্রমানুসারে পরবর্তী আউটপুট সক্রিয় করে।

একটি স্বয়ংক্রিয় চলমান আলোর তুলনায় মূল সুবিধা হল নিয়ন্ত্রণ: আপনি চাপ না দেওয়া পর্যন্ত কিছুই ঘটে না, তাই আলো শুধুমাত্র তখনই এগিয়ে যায় যখন আপনি সিদ্ধান্ত নেন। ভিডিওটিও উল্লেখ করে যে একই টগলিং এবং সিকোয়েন্সিং ধারণা একটি রিলে চালাতে পারে একটি AC আলো সুইচ করতে বা একটি মোটর নিয়ন্ত্রণ করতে, শুধু LED নয় (ভিডিওতে 19:52 এ)।

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

যন্ত্রাংশের তালিকা সংক্ষিপ্ত এবং সস্তা:

  • একটি Arduino বোর্ড (Uno, Nano, Mega, বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)।
  • পাঁচটি LED — 5 মিমি বা 3 মিমি, আপনার পছন্দের যেকোনো রঙ।
  • পাঁচটি কারেন্ট-লিমিটিং রেজিস্টর, 200 Ω থেকে 1000 Ω (ভিডিওতে 1 kΩ ব্যবহার করা হয়েছে)।
  • একটি পুশ বোতাম সুইচ (একটি মোমেন্টারি ট্যাকটাইল সুইচ আদর্শ)।
  • একটি ব্রেডবোর্ড এবং কিছু DuPont জাম্পার তার।

LED সম্পর্কে একটি দ্রুত নোট: ক্যাথোড হল ছোট পা এবং সমতল প্রান্তের দিক, যখন অ্যানোড হল লম্বা পা (ভিডিওতে 03:13 এ)। রেজিস্টরের মান সমালোচনামূলক নয় — একটি উচ্চতর রেজিস্টর কেবল LED-কে ম্লান করে, তাই প্রায় 300 Ω থেকে 1000 Ω পর্যন্ত যেকোনো কিছু ভালো কাজ করবে (ভিডিওতে 05:33 এ)।

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

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

ওয়্যারিং মূলত একটি স্ট্যান্ডার্ড পাঁচ-LED হাঁটার আলোর মতোই, সাথে একটি পুশ বোতাম যোগ করা হয়েছে। প্রতিটি LED-এর অ্যানোড তার নিজস্ব Arduino পিনের সাথে সংযুক্ত, এবং প্রতিটি ক্যাথোড তার নিজস্ব রেজিস্টরের মাধ্যমে ব্রেডবোর্ডের একটি সাধারণ গ্রাউন্ড রেলের সাথে সংযুক্ত। এই বিল্ডে LEDগুলি পিন 3, 4, 5, 6, এবং 7-এ সংযুক্ত (ভিডিওতে 31:37 এ)। পুশ বোতামটি ব্রেডবোর্ডে স্থাপন করা হয়েছে যার একটি পা গ্রাউন্ডে এবং অন্য পা পিন 2-এ — কোডটি বোতামের জন্য যে পিনটি ব্যবহার করে সেটিই (ভিডিওতে 37:04 এ)।

যেহেতু কোডটি Arduino-এর অভ্যন্তরীণ পুল-আপ রেজিস্টর সক্রিয় করে, বোতামে কোনো বাহ্যিক রেজিস্টরের প্রয়োজন নেই। যখন বোতাম চাপা হয় না তখন পিন HIGH পড়ে, এবং যখন আপনি এটি চাপেন তখন পিনটি গ্রাউন্ডে টানা হয় এবং LOW পড়ে (ভিডিওতে 14:02 এ)।

কোড ব্যাখ্যা

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

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

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

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

প্রতিটি চাপের পরে একটি ছোট বিলম্বও রয়েছে:

delay(200); // debounce / give the user time between presses

এই 200 মিলিসেকেন্ডের বিরতি একটি একক শারীরিক চাপকে একাধিক চাপ হিসাবে নিবন্ধিত হওয়া থেকে বিরত রাখে। যদি আপনার আঙুল কাঁপে বা বোতামটি খুব সংবেদনশীল মনে হয়, এই সংখ্যাটি বাড়ান; যদি আপনি দ্রুত প্রতিক্রিয়া চান, এটি কমান। সচেতন থাকুন যে এটি খুব কম সেট করলে আলো অপ্রত্যাশিতভাবে এগিয়ে যেতে পারে (ভিডিওতে 41:20 এ)।

মূল যুক্তিটি loop()-এ থাকে। এটি বোতামটি পড়ে, এবং শুধুমাত্র যখন বোতামটি চাপা হয় (LOW পড়া) তখনই এটি আলোকে এগিয়ে নেয়। সিকোয়েন্সটি LED1 থেকে LED2 থেকে LED3-এ যাওয়ার জন্য if / else if চেকের একটি চেইন ব্যবহার করে, এবং এভাবে চলতে থাকে, শেষটির পরে আবার LED1-এ ফিরে আসে। আপনি যদি দিক বা LED-গুলোর ক্রম পরিবর্তন করতে চান, এটি সম্পাদনা করার ব্লক — সহজভাবে কোন পিন কোনটির পরে আসবে তা পুনরায় নির্ধারণ করুন।

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

কোড আপলোড করার পরে, বোতাম চাপলে প্রথম LED জ্বলে; ছেড়ে দিলে সেই LED জ্বলন্ত অবস্থায় থাকে। পরবর্তী চাপে আলোটি দ্বিতীয় LED-এ যায়, তারপর তৃতীয়, চতুর্থ এবং পঞ্চমে, এবং পরের চাপে আবার প্রথমটিতে ফিরে আসে — একটি অবিরাম ঘূর্ণন (ভিডিওতে 40:22-এ)।

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

আপনি যদি কোনো বোতাম ছাড়াই আলোটি স্বয়ংক্রিয়ভাবে চালাতে চান, সেটি একটি পৃথক বিল্ড। স্বয়ংক্রিয় সংস্করণটি পাঠ 98-7: আর্ডুইনো এবং 5টি LED ব্যবহার করে চলমান আলো-এ আলোচনা করা হয়েছে।

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

অধ্যায়

  • [00:00] 10টি আর্ডুইনো LED প্রকল্পের সংক্ষিপ্ত বিবরণ
  • [01:22] আর্ডুইনো ধাপে ধাপে কোর্সের পরিচিতি
  • [02:29] LED বোঝা: প্রতীক, পোলারিটি এবং পিন
  • [03:49] LED কারেন্ট-লিমিটিং রেজিস্টর গণনা
  • [30:47] 5টি LED দিয়ে চলমান আলো: ওয়্যারিং এবং নীতি
  • [32:52] চলমান আলোর কোড: পিন, টাইমিং এবং লুপ
  • [36:41] একটি পুশ বোতাম দিয়ে আলো এগিয়ে নেওয়া
  • [37:44] পুশ বোতাম দিয়ে চলমান আলো: কোড ওয়াকথ্রু
  • [40:22] প্রদর্শন এবং প্রেস বিলম্ব সামঞ্জস্য করা
  • [57:16] সমাপ্তি মন্তব্য এবং কোর্স আউট্রো

ছবি

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

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

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

ফাইলসমূহ📁

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

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