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

পাঠ ৯৮-৪: আরডুইনো ব্যবহার করে একটি এলইডি লাইট ফেড করা: উজ্জ্বলতা নিয়ন্ত্রণ

পাঠ ৯৮-৪: আরডুইনো ব্যবহার করে একটি এলইডি লাইট ফেড করা: উজ্জ্বলতা নিয়ন্ত্রণ

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

এলইডি-৫মিমি-সবুজ

একবার আপনি ফেডিং বুঝতে পারলে, আপনি এটি বিস্তৃত ব্যবহারিক নির্মাণে প্রয়োগ করতে পারেন:

  • একটি ডিভাইসে একটি "শ্বাস-প্রশ্বাসের" স্ট্যাটাস ইন্ডিকেটর তৈরি করা যা বিভ্রান্তিকরভাবে ব্লিংক করার পরিবর্তে আলতোভাবে স্পন্দিত হয়
  • পরিবেষ্টিত আলো বা দিনের সময়ের উপর ভিত্তি করে একটি এলইডি নাইটলাইট স্বয়ংক্রিয়ভাবে ম্লান করা
  • একটি এলসিডি বা ওএলইডি ডিসপ্লেতে ব্যাকলাইটের উজ্জ্বলতা নিয়ন্ত্রণ করা
  • উজ্জ্বলতার স্তরগুলির মধ্যে মসৃণ পরিবর্তন সহ মুড লাইটিং বা আলংকারিক বাতি তৈরি করা
  • একটি ধীর সূর্যোদয় অ্যালার্ম ঘড়ি অনুকরণ করা যা ধীরে ধীরে উজ্জ্বল হয়ে আপনাকে প্রাকৃতিকভাবে জাগায়
  • ছোট ডিসি মোটর বা ফ্যানে গতি নিয়ন্ত্রণ যোগ করা (একই PWM নীতি প্রযোজ্য)

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

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

330_ohm_resistor
৩৩০ ওহম ০.২৫ ওয়াট রেজিস্টর

এই প্রকল্পের যন্ত্রাংশের তালিকা ন্যূনতম — যদি আপনি আগে কোনো আরডুইনো কাজ করে থাকেন, তাহলে আপনার প্রয়োজনীয় সবকিছু সম্ভবত ইতিমধ্যেই আছে:

  • ১টি আরডুইনো বোর্ড (উনো, ন্যানো, মেগা, বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • ১টি এলইডি (৫মিমি বা ৩মিমি, যেকোনো রঙ)
  • ১টি রেজিস্টর (২০০Ω থেকে ১০০০Ω — ৩০০Ω থেকে ১kΩ পরিসীমা ভালো কাজ করে)
  • ব্রেডবোর্ড এবং ডুপন্ট জাম্পার তার
  • প্রোগ্রামিং এবং পাওয়ারের জন্য ইউএসবি কেবল

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

রেজিস্টরের মানের জন্য, ট্রান্সক্রিপ্টটি (ভিডিওতে ০৩:৪৯ এ) গণিতের মধ্য দিয়ে যায়: একটি সাধারণ এলইডি প্রায় ২V ড্রপ করে এবং প্রায় ১০mA কারেন্ট প্রয়োজন। ৫V সরবরাহের সাথে, অবশিষ্ট ৩V রেজিস্টর জুড়ে ড্রপ করতে হবে, যা দেয় R = V/I = 3V / 0.01A = 300Ω। বাস্তবে, ৩০০Ω থেকে ১০০০Ω পর্যন্ত যেকোনো কিছু কাজ করবে — উচ্চতর মান শুধু একটি ম্লান এলইডি উৎপন্ন করে। ফেডিংয়ের জন্য, এটি আসলে ঠিক আছে, যেহেতু আপনি যেকোনোভাবে উজ্জ্বলতা পরিবর্তন করছেন।

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

Arduino schematic for two LEDs see saw
দুটি এলইডি স-স-এর জন্য আরডুইনো স্কিম্যাটিক
Arduino wiring for two LEDs see saw
দুটি এলইডি স-স-এর জন্য আরডুইনো ওয়্যারিং

ওয়্যারিংটি যতটা সহজ হতে পারে ততটাই সহজ। এলইডির অ্যানোড একটি রেজিস্টরের মাধ্যমে আরডুইনোর একটি PWM-সক্ষম পিনের সাথে সংযুক্ত — এই প্রকল্পে, পিন ৩। ক্যাথোড গ্রাউন্ডের সাথে সংযুক্ত।

কেন বিশেষভাবে পিন ৩? কারণ সব আরডুইনো পিন PWM সমর্থন করে না। বেশিরভাগ আরডুইনো বোর্ডে, PWM-সক্ষম পিনগুলি টিল্ড চিহ্ন (~) দিয়ে চিহ্নিত করা হয় — সাধারণত উনোতে পিন ৩, ৫, ৬, ৯, ১০, এবং ১১। যদি আপনি একটি অ-PWM পিন ব্যবহার করেন, analogWrite() একটি পরিবর্তনশীল আউটপুট উৎপন্ন করবে না; এলইডি শুধু চালু বা বন্ধ থাকবে।

সার্কিটটি নিম্নরূপ সংযুক্ত করুন:

  1. এলইডিটি ব্রেডবোর্ডে ঢোকান, লক্ষ্য করুন কোন পা অ্যানোড (লম্বা) এবং কোনটি ক্যাথোড (ছোট/সমতল দিক)।
  2. এলইডির অ্যানোডটি রেজিস্টরের মাধ্যমে আরডুইনো পিন ৩-এর সাথে সংযুক্ত করুন।
  3. এলইডির ক্যাথোডটি আরডুইনোর GND পিনের সাথে সংযুক্ত করুন।
  4. ইউএসবি-এর মাধ্যমে আরডুইনোকে আপনার কম্পিউটারে প্লাগ করুন।

কোড ব্যাখ্যা

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

ব্যবহারকারী-কনফিগারযোগ্য ভেরিয়েবল

কোডের শীর্ষে, তিনটি ভেরিয়েবল সম্পূর্ণ আচরণ নিয়ন্ত্রণ করে:

int led = 3;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 3;    // how many points to fade the LED by
  • led — এটি নির্ধারণ করে যে LED কোন পিনের সাথে সংযুক্ত। ডিফল্ট হলো পিন 3, তবে আপনি এটি যেকোনো PWM-সক্ষম পিনে পরিবর্তন করতে পারেন (আপনার বোর্ডে ~ চিহ্ন দিয়ে চিহ্নিত)। যদি আপনি LED অন্য পিনে সরান, তাহলে এই মানটি সেই অনুযায়ী আপডেট করুন।
  • brightness — এটি বর্তমান উজ্জ্বলতার মাত্রা, যা 0 (বন্ধ) থেকে 255 (সম্পূর্ণ উজ্জ্বলতা) পর্যন্ত হয়ে থাকে। কোডটি এটি 0 থেকে শুরু করে, তবে আপনি এই পরিসরের যেকোনো স্থান থেকে শুরু করতে পারেন।
  • fadeAmount — এটি পরীক্ষা করার জন্য সবচেয়ে মজার একটি। এটি নিয়ন্ত্রণ করে প্রতি চক্রে কতগুলো উজ্জ্বলতার "ধাপ" নেওয়া হয়। 3-এর মতো ছোট মান ধীর, ক্রমিক ফেড তৈরি করে। 20-এর মতো বড় মান LED-কে খুব দ্রুত ফেড ইন এবং আউট করায়। ট্রান্সক্রিপ্টটি এটি (ভিডিওতে 22:37-এ) প্রদর্শন করে — 5 থেকে 20-এ পরিবর্তন করলে প্রভাবটি নাটকীয়ভাবে দ্রুত হয়।

ফেডিং কীভাবে কাজ করে

ফেডিংয়ের মূল অংশটি loop()-এর ভিতরে দুটি লাইনে ঘটে:

analogWrite(led, brightness);
brightness = brightness + fadeAmount;

লুপের প্রতিটি পাসে, বর্তমান উজ্জ্বলতার মান analogWrite() ব্যবহার করে LED-তে লেখা হয়, তারপর উজ্জ্বলতা fadeAmount দ্বারা বৃদ্ধি করা হয়। analogWrite() ফাংশন একটি অ্যানালগ ভোল্টেজ অনুকরণ করতে PWM ব্যবহার করে — এটি দ্রুত পিনটি চালু এবং বন্ধ করে, এবং চালু-সময় ও বন্ধ-সময়ের অনুপাত অনুভূত উজ্জ্বলতা নির্ধারণ করে।

যখন উজ্জ্বলতা 0 বা 255-এ পৌঁছায়, কোডটি fadeAmount-এর চিহ্ন উল্টিয়ে দিক পরিবর্তন করে:

if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
}

এটিই LED-কে ফেড ইন, তারপর ফেড আউট, তারপর আবার ফেড ইন করায় — একটি অবিরাম শ্বাস-প্রশ্বাসের চক্র। লুপের শেষে delay(30) অ্যানিমেশনের সামগ্রিক গতি নিয়ন্ত্রণ করে। ছোট ডিলে ফেডকে দ্রুত করে; বড় ডিলে এটি ধীর করে।

মান নিয়ে পরীক্ষা-নিরীক্ষা

দুটি ভেরিয়েবল আপনাকে ভিজ্যুয়াল প্রভাবের উপর সবচেয়ে বেশি নিয়ন্ত্রণ দেয়:

  • fadeAmount বাড়ান দ্রুত, আরও নাটকীয় ফেডের জন্য। 10 বা 20 চেষ্টা করুন।
  • fadeAmount কমান ধীর, মৃদু শ্বাস-প্রশ্বাসের প্রভাবের জন্য। 1 বা 2 চেষ্টা করুন।
  • delay() মান সামঞ্জস্য করুন গতি পরিবর্তন করতে। ছোট ডিলে পুরো চক্রকে দ্রুততর করে; বড় ডিলে এটি দীর্ঘায়িত করে।

ছোট fadeAmount-এর সাথে ছোট ডিলে মিলিয়ে অত্যন্ত মসৃণ, প্রায় জৈবিক ফেড তৈরি হয় — অ্যাম্বিয়েন্ট লাইটিংয়ের জন্য দুর্দান্ত। বড় fadeAmount-এর সাথে ছোট ডিলে দ্রুত স্পন্দনশীল প্রভাব তৈরি করে।

লাইভ প্রকল্প প্রদর্শন

কোড আপলোড হয়ে গেলে, আপনি দেখবেন LED ধীরে ধীরে বন্ধ থেকে সম্পূর্ণ উজ্জ্বলতায় উজ্জ্বল হয়, তারপর আবার ম্লান হয়ে যায়, অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করে। ট্রান্সক্রিপ্টটি (ভিডিওতে 22:25-এ) ডিফল্ট আচরণ দেখায় — একটি মসৃণ, মাঝারি গতির ফেড।

যখন fadeAmount 20-এ পরিবর্তন করা হয়, LED খুব দ্রুত ফেড ইন এবং আউট করে — প্রায় একটি ঝিকিমিকির মতো। যখন 3-এ সেট করা হয়, ফেড লক্ষণীয়ভাবে বেশি সময় নেয়, একটি শিথিল, ক্রমিক রূপান্তর তৈরি করে। এটি ভিডিওতে (ভিডিওতে 23:02-এ) স্পষ্টভাবে প্রদর্শিত হয়েছে।

এই প্রকল্পের সৌন্দর্য হলো আপনি আপনার কোড পরিবর্তনের প্রভাব তাৎক্ষণিকভাবে দেখতে পারেন — কোনো তারের পরিবর্তন প্রয়োজন নেই, শুধু ভেরিয়েবল সম্পাদনা করুন এবং পুনরায় আপলোড করুন। এই ঘনিষ্ঠ প্রতিক্রিয়া লুপ এটি PWM এবং টাইমিং কীভাবে相互作用 করে তার অন্তর্দৃষ্টি তৈরির একটি চমৎকার উপায় করে তোলে।

যদি আপনি এটি ক্রমাগত চলতে দেওয়ার পরিবর্তে একটি পুশ বাটন দিয়ে ফেড ট্রিগার করে আরও এগিয়ে নিতে চান, তা একটি পৃথক টিউটোরিয়ালে কভার করা হয়েছে — নিচের সম্পর্কিত প্রকল্প বিভাগ দেখুন।

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

অধ্যায়

  • [00:00] 10টি Arduino LED প্রকল্পের সংক্ষিপ্ত বিবরণ
  • [01:22] কোর্স এবং প্রয়োজনীয় উপাদানের পরিচিতি
  • [02:29] LED বোঝা: প্রতীক, পোলারিটি এবং প্রকারভেদ
  • [03:49] ওহমের সূত্র ব্যবহার করে LED রেজিস্টর মান গণনা
  • [05:53] প্রকল্প 1: একটি LED চালু এবং বন্ধ করা
  • [12:43] প্রকল্প 2: পুশ বাটন দিয়ে LED নিয়ন্ত্রণ
  • [17:13] প্রকল্প 3: পুশ বাটন দিয়ে টগল LED
  • [20:12] প্রকল্প 4: একটি LED ফেড করা — কোড ওয়াকথ্রু
  • [22:25] ফেডিং প্রদর্শন এবং ফেড গতি সামঞ্জস্য
  • [23:20] প্রকল্প 5: পুশ বাটন ট্রিগার দিয়ে LED ফেড করা
  • [27:32] প্রকল্প 6: সিসো LED প্রভাব
  • [30:47] প্রকল্প 7: 5টি LED দিয়ে ওয়াকিং লাইট
  • [36:41] প্রকল্প 8: পুশ বাটন দ্বারা নিয়ন্ত্রিত ওয়াকিং লাইট
  • [42:25] প্রকল্প 9: পটেনশিওমিটার দিয়ে LED ভোল্টেজ লেভেল মিটার
  • [49:25] প্রকল্প 10: Arduino ট্রাফিক লাইট

ছবি

Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
936-Lessson 98-LED-4: Arduino code to fade the LED light
ভাষা: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

ফাইলসমূহ📁

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

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