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

পাঠ ৯৮-৫: আর্ডুইনো ব্যবহার করে বোতাম চাপলে আলো ফেড করা

পাঠ ৯৮-৫: আর্ডুইনো ব্যবহার করে বোতাম চাপলে আলো ফেড করা

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

LED with resistor on breadboard connected to Arduino with a push button
LED with resistor on breadboard connected to Arduino with a push button

চাহিদা অনুযায়ী ফেডিং বাস্তব পণ্যগুলিতে সর্বত্র দেখা যায়। এখানে আপনি যা শিখবেন তা ব্যবহার করার কয়েকটি ব্যবহারিক উপায় রয়েছে:

  • সফট-অফ ইন্ডিকেটর লাইট — একটি বাতি হঠাৎ নিভে যাওয়ার পরিবর্তে, আপনি একটি বাটন চাপলে এটি মৃদুভাবে কমে যায়, যা যন্ত্রপাতি এবং 3D-প্রিন্টেড এনক্লোজারে অনেক বেশি পরিমার্জিত দেখায়।
  • স্লিপ / স্ট্যান্ডবাই মোড — একটি বাটন চাপুন এবং একটি উজ্জ্বল স্ট্যাটাস LED কালো হয়ে যায় যাতে এটি রাতে আপনাকে বিরক্ত না করে, যখন সার্কিট চালু থাকে।
  • "ফেড টু ব্ল্যাক" স্টেজ বা মডেল লাইটিং — একটি একক বাটন হঠাৎ কাটার পরিবর্তে একটি LED স্ট্রিপ বা প্যানেলের মসৃণ ডিমিং ট্রিগার করে।
  • ব্যাটারি সাশ্রয়ী ফিডব্যাক — একটি ক্ষণস্থায়ী বাটন চাপ আপনাকে একটি উজ্জ্বল নিশ্চিতকরণ ফ্ল্যাশ দেয় যা ধীরে ধীরে মিলিয়ে যায়, তাই LED শুধুমাত্র অল্প সময়ের জন্য সম্পূর্ণ উজ্জ্বল থাকে।
  • ইন্টারঅ্যাকটিভ আর্ট এবং প্রপস — স্পর্শ দ্বারা ট্রিগার করা একটি "ব্রিদিং আউট" ইফেক্ট, কসপ্লে, ডায়োরামা বা মিউজিয়াম ডিসপ্লের জন্য আদর্শ।

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

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

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

330_ohm_resistor
330_ohm_resistor

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

  • Arduino বোর্ড (Uno, Nano, Mega, বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • একটি LED (5 মিমি বা 3 মিমি, যেকোনো রঙ)
  • একটি পুশ বাটন সুইচ (মোমেন্টারি, 4-পিন ট্যাকটাইল টাইপ ভালো কাজ করে)
  • LED-এর জন্য একটি রেসিস্টর — 200 Ω থেকে 1000 Ω পর্যন্ত যেকোনো (ক্লাসিক 220 Ω বা 330 Ω নিখুঁত)
  • ব্রেডবোর্ড এবং ডুপন্ট জাম্পার তার
  • প্রোগ্রামিংয়ের জন্য USB কেবল (এবং একটি ব্যাটারি বা 5 V অ্যাডাপ্টার যদি আপনি এটি তারবিহীন চালাতে চান)

LED রেসিস্টর সম্পর্কে একটি দ্রুত নোট: একটি LED-এর জুড়ে প্রায় 2 V এবং প্রায় 10 mA কারেন্ট প্রয়োজন। 5 V সরবরাহের সাথে, রেসিস্টরকে বাকি 3 V কমাতে হবে, তাই ওহমের সূত্র প্রায় 300 Ω দেয়। 300 Ω থেকে 1000 Ω পর্যন্ত যেকোনো কিছু কাজ করবে — উচ্চতর মান শুধু LED-কে আরও ম্লান করে তোলে। একটি রেসিস্টর ব্যবহার ঐচ্ছিক নয়; এটি ছাড়া LED অনেক বেশি কারেন্ট টানবে এবং পুড়ে যাবে।

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

Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch

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

LED পোলারিটিতে মনোযোগ দিন: প্লাস্টিক বডির সমতল দিক এবং ছোট পা ক্যাথোড (নেগেটিভ) চিহ্নিত করে। যদি আপনি এটি উল্টো করে ঢোকান, LED কেবল জ্বলবে না — কোনো ক্ষতি হয় না, শুধু এটি উল্টে দিন।

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

কোড ব্যাখ্যা

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

const int pushButtonPin = 2;//পুশ বাটন সুইচ যে পিনের সাথে সংযুক্ত
const int LEDPin = 3;//LED যে পিনের সাথে সংযুক্ত
const int fadeAmount = 10;    // LED কত পয়েন্ট করে ফেড করবে
const int fadeSpeed = 5;//মিলিসেকেন্ডে ফেডের সময়। মান যত ছোট, ফেডিং তত দ্রুত

pushButtonPin এবং LEDPin সহজভাবে Arduino-কে বলে দেয় আপনি কোন পিনে জিনিসগুলো সংযুক্ত করেছেন। যদি আপনি বাটনটি পিন 4-এ বা LED-টি পিন 9-এ (একটি PWM-সক্ষম পিন) সরান, তাহলে আপনার ওয়্যারিংয়ের সাথে মিল রাখতে শুধু এই দুটি সংখ্যা পরিবর্তন করুন। মনে রাখবেন LED পিনটি অবশ্যই PWM সমর্থন করতে হবে — একটি Uno-তে এর মানে হলো পিন 3, 5, 6, 9, 10, বা 11 — কারণ ফেডিংয়ের জন্য analogWrite() প্রয়োজন।

fadeAmount নিয়ন্ত্রণ করে প্রতিটি উজ্জ্বলতার ধাপ কত বড় হবে। উজ্জ্বলতা 0 থেকে 255 পর্যন্ত চলে, তাই fadeAmount 10 মানে LED প্রায় 25 ধাপে ডিম হবে। বড় সংখ্যা ফেডকে মোটা ও দ্রুত করে; ছোট সংখ্যা এটিকে মসৃণ ও ধীর করে।

fadeSpeed হলো প্রতিটি ধাপের মধ্যে মিলিসেকেন্ডে বিলম্ব। প্রভাবটি কেমন অনুভূত হবে তার জন্য এটি সবচেয়ে গুরুত্বপূর্ণ নিয়ন্ত্রক। 5 ms মান দ্রুত, ঝটপট ফেড দেয়; 30 ms বা তার বেশি মান ধীর, বিলাসবহুল ডিমিং দেয়। fadeAmount-এর সাথে মিলিয়ে, এই দুটি মান আপনাকে আপনার পছন্দমতো ঠিক সেই চরিত্রে ফেডটি টিউন করার সুযোগ দেয়।

একটি অভ্যন্তরীণ ভেরিয়েবলও জানার মতো:

int brightness = 255;    // LED কত উজ্জ্বল
int pushButtonStatus = 0; // পিন 2 থেকে পুশ মান

brightness 255 থেকে শুরু হয়, মানে প্রতিবার বাটন চাপলে LED পূর্ণ উজ্জ্বলতায় শুরু হয়। যদি আপনি ফেডটি আরও ডিম অবস্থান থেকে শুরু করতে চান — ধরা যাক, অর্ধেক উজ্জ্বলতা — এটি 128-এ পরিবর্তন করুন।

লজিকটি নিজেই এভাবে কাজ করে: লুপটি বাটন পড়ে। যদি এটি চাপা হয় (LOW, কারণ অভ্যন্তরীণ পুল-আপ), একটি while লুপ চলতে থাকে যতক্ষণ brightness শূন্যের উপরে থাকে। সেই লুপের ভিতরে Arduino LED-তে বর্তমান উজ্জ্বলতা লেখে, fadeAmount বিয়োগ করে, fadeSpeed মিলিসেকেন্ড অপেক্ষা করে, এবং পুনরাবৃত্তি করে। যখন বাটন চাপা না থাকে, LED-তে সহজভাবে 0 লেখা হয় এবং এটি বন্ধ থাকে।

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

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

একবার আপলোড করা হলে, আচরণটি তাৎক্ষণিক এবং সন্তোষজনক। বাটন চাপুন এবং LED পূর্ণ উজ্জ্বলতায় লাফিয়ে ওঠে, তারপর আপনার নিয়ন্ত্রিত সময়কালে দৃশ্যমানভাবে শূন্যে নেমে আসে। বাটন ছেড়ে দিন এবং LED অন্ধকার হয়ে যায়; আবার চাপুন এবং ফেডটি পূর্ণ উজ্জ্বলতা থেকে পুনরায় শুরু হয়।

ভিডিওতে ফেডটি বিভিন্ন সেটিংয়ে দেখানো হয়েছে যাতে আপনি পার্থক্যটি শুনতে ও দেখতে পারেন। fadeAmount = 20 দিয়ে ফেডটি দ্রুত এবং খণ্ডিত — এটি কয়েকটি দৃশ্যমান ধাপে শূন্যে পৌঁছায়। fadeAmount = 10-এ নামালে এটি যথেষ্ট মসৃণ হয়, এবং fadeAmount = 3-এ গেলে ফেডটি লক্ষণীয়ভাবে বেশি সময় নেয় এবং প্রায় অবিচ্ছিন্ন দেখায়। fadeSpeed মানের সমান নাটকীয় প্রভাব রয়েছে: এটি 1 ms-এ সেট করলে ফেডটি প্রায় তাৎক্ষণিক হয়ে যায়, আর বড় মান এটিকে দীর্ঘায়িত করে।

এই পরীক্ষাটি করুন: fadeAmount = 5 এবং fadeSpeed = 30 সেট করুন। আপনি একটি ধীর, মৃদু ডিমিং পাবেন যা ঘুমিয়ে পড়া আলোর মতো দেখায়। তারপর একটি কঠিন, দ্রুত কাটের জন্য fadeAmount = 50 এবং fadeSpeed = 1 সেট করুন। কোনোটিই "ভুল" নয় — এটি সম্পূর্ণভাবে আপনি যে মেজাজ চান তার উপর নির্ভর করে।

একই বাটনের টগল আচরণ আলাদাভাবে Lesson 98-3: How to Turn On/Off a Toggle LED Using a Push Button with Arduino-এ আলোচনা করা হয়েছে, এবং সহজ চাপলে-জ্বলে-ওঠা সংস্করণটি Lesson 98-2: How to Turn On and Off an LED Using a Push Button with Arduino-এ রয়েছে।

যেহেতু ফেডটি একটি ক্ষণস্থায়ী সংযোগ দ্বারা ট্রিগার হয়, এই একই সার্কিট LED-এর পরিবর্তে একটি রিলে বা MOSFET চালানোর জন্য স্বাভাবিকভাবে উপযুক্ত — আপনি একটি 12 V বাতি, একটি মোটরের সফট-স্টার্ট, বা একটি হিটিং এলিমেন্টের ওয়ার্ম-আপ ফেড করতে পারেন। বাটনটি শুধু ট্রিগার; আপনি কী ফেড করবেন তা আপনার উপর নির্ভর করে।

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

অধ্যায়সমূহ

  • [00:00] ১০টি LED প্রকল্পের সংক্ষিপ্ত বিবরণ
  • [01:00] আরডুইনো ধাপে ধাপে কোর্সের পরিচিতি
  • [02:29] LED বেসিক: প্রতীক, পোলারিটি এবং কারেন্ট
  • [03:49] ওহমের সূত্র দিয়ে LED রেজিস্টর গণনা
  • [05:53] প্রকল্প ১: একটি LED চালু এবং বন্ধ করা
  • [12:43] প্রকল্প ২: পুশ বাটন দিয়ে LED
  • [17:13] প্রকল্প ৩: পুশ বাটন দিয়ে LED টগল করা
  • [20:12] প্রকল্প ৪: একটি LED ফেড করা
  • [23:20] প্রকল্প ৫: পুশ বাটন দিয়ে একটি LED ফেড করা
  • [27:32] প্রকল্প ৬: সিসো LED
  • [30:47] প্রকল্প ৭: ওয়াকিং লাইট
  • [36:41] প্রকল্প ৮: পুশ বাটন দিয়ে ওয়াকিং লাইট
  • [42:25] প্রকল্প ৯: LED ভোল্টেজ লেভেল মিটার
  • [49:25] প্রকল্প ১০: আরডুইনো ট্রাফিক লাইট

ছবি

Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
পুশ বাটনসহ আরডুইনো-এর সাথে সংযুক্ত ব্রেডবোর্ডে রেজিস্টরসহ এলইডি
পুশ বাটনসহ আরডুইনো-এর সাথে সংযুক্ত ব্রেডবোর্ডে রেজিস্টরসহ এলইডি
937-Lessson 98-LED-5: Arduino code to fade the LED when push button is pressed
ভাষা: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

ফাইলসমূহ📁

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

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