সুচিপত্র:

হাতে তৈরি আরডুইনো-চালিত আরজিবি মুডল্যাম্প: 7 টি ধাপ
হাতে তৈরি আরডুইনো-চালিত আরজিবি মুডল্যাম্প: 7 টি ধাপ

ভিডিও: হাতে তৈরি আরডুইনো-চালিত আরজিবি মুডল্যাম্প: 7 টি ধাপ

ভিডিও: হাতে তৈরি আরডুইনো-চালিত আরজিবি মুডল্যাম্প: 7 টি ধাপ
ভিডিও: আপনার নাম LED ডিসপ্লেতে! সহজেই পারবেন // Scrolling Text using Arduino & MAX7219 | JLCPCB 2024, নভেম্বর
Anonim
হাতে তৈরি আরডুইনো চালিত আরজিবি মুডল্যাম্প
হাতে তৈরি আরডুইনো চালিত আরজিবি মুডল্যাম্প
হাতে তৈরি আরডুইনো চালিত আরজিবি মুডল্যাম্প
হাতে তৈরি আরডুইনো চালিত আরজিবি মুডল্যাম্প

এই নির্দেশযোগ্যটি 5 টি ভাগে বিভক্ত:- নির্মাণ পরিকল্পনা (ধাপ 1)- হস্তনির্মিত ছায়া (ধাপ 2+3)- ATmega8 নিয়ামক (ধাপ 4) দিয়ে 3W LEDs চালানোর জন্য ইলেকট্রনিক সার্কিট- কোড (ধাপ 5)- কিভাবে এটি পেতে হয় একা একা (PonyProg দিয়ে Arduino বুটলোডার ফ্ল্যাশ করুন এবং স্কেচ বার্ন করুন) (ধাপ 6) শীঘ্রই আসছে Vid: কিছু ছাপ

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: A mighty 3W LED

ধাপ 1: নির্মাণ পরিকল্পনা:

নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা

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

ধাপ 2: হস্তনির্মিত ছায়া

হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া

উপকরণ সংগ্রহ করা: ছায়া: আমি দোকানে 30 মিলি প্লাস্টিকের একটি 3 ফুট x 3 ফুট শীট খুঁজে পেয়েছি (Pic1-3) এটি কাটার জন্য একটি ধারালো ছুরি ব্যবহার করুন। একটি মসৃণ সিলিন্ডার পান আমি ডান ছিদ্র (Pic7-8) তুরপুন পরে সব একসঙ্গে screwed। এটি সুন্দরভাবে দেখায় এবং পেতে এবং হ্যান্ডেল করা সহজ।.শ্যাফট থেকে খুব বেশি শেড না পাওয়ার জন্য, আমি উপরে একটি M8 বাদাম (Pic12) দিয়ে ওয়েল্ডিং রড থেকে একটু খাঁচা তৈরি করি। ছোট স্ক্রু এবং বাদাম একটু চতুর ছিল, কিন্তু 30 মিনিট পরে আমি এটি সম্পন্ন করেছি।

ধাপ 3: হস্তনির্মিত ছায়া

হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া
হস্তনির্মিত ছায়া

বেস: ডিস্কগুলিকে মসৃণ এবং গোলাকার করার জন্য লেথে চেক করা হয়েছিল। পরবর্তীতে, আমি এটিকে একটি মেহগনি কাঠের দাগ দিয়ে দাগ দিয়েছিলাম যাতে পাইনটি ভাল দেখায়। এরপর কি?!? আমি একই ব্যবহার করে একটি বেস তৈরি করার সিদ্ধান্ত নিয়েছি ছায়া হিসাবে হিমায়িত প্লাস্টিক, এবং এটি একটি RGB microLED (Pic5) সঙ্গে ব্যাকলাইট। knobs: আমি মেহগনি একটি টুকরা থেকে বোতাম এবং বাদাম একটি offcut থেকে knobs তৈরি

ধাপ 4: বৈদ্যুতিক সার্কিট:

বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট

প্রথম ছবিতে আপনি আমার পরিকল্পিত দেখতে পান। এবং এখানে আরেকটি ভিডিও: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

ধাপ 5: কোড:

কোড
কোড
কোড
কোড
কোড
কোড

ছবিগুলিতে আপনি Arduino এর সাথে আমার প্রক্রিয়াটি দেখুন। প্রথমে আমি আমার নিজের তৈরি প্রোটোশিল্ড, একটি ব্যাটারি প্যাক এবং কিছু ধরণের এলইডি দিয়ে চেষ্টা করেছি। আমি কিছু মাস আগে টডেকার্টের "স্পুকি প্রজেক্টস" এবং "বায়োনিক আর্ডুইনো" দিয়ে শুরু করেছি। https://todbot.com/blog/spookyarduino/ আমার কোড তার প্রজেক্ট কোডের একটি চতুর সমন্বয়। "RGBMoodlight", "RGBPotMixer" এবং কিছু এক্সটেনশন। তিন এনালগ-ইন এবং একটি ডিজিটাল-ইন মোড সুইচ (ধন্যবাদ জু। বিরতি-রুটিনের জন্য:)। LEDs সংযুক্ত আছে D9, D10 এবং D11 যা PulseWithModulation সমর্থন করে। যদি আপনি চান, আমি স্কেচ প্রকাশ করতে পারি, কিন্তু এটি সত্যিই এই দুটি দুর্দান্ত কোডের একটি খালি সংমিশ্রণ। এখানে আমার প্রদীপের মূল কোড এটি একটু অগোছালো দেখায়, কারণ এটি ছিল আমার প্রোগ্রামিং এর খুব প্রাথমিক পর্যায়…

ক্লে শির্কির "dimmingLEDs" এর উপর ভিত্তি করে আমার "মুডল্যাম্প" এর কোড

*নেজো সেপ্টেম্বর ২০০8

  • ইন্টারাপ্ট-মোড-সুইচ সহ মুডল্যাম্পের জন্য চূড়ান্ত কোড, আরজিবি-ফেইডিং এবং আরজিবি রঙ পরিবর্তনের জন্য এনালগ স্পিড-ডায়াল।
  • ডিমিং-ফাংশন শুধুমাত্র সাদা রঙের জন্য কাজ করে

*নেজো অক্টোবর ২০০8

  • মুডল্যাম্পের জন্য সাউন্ড-এক্সটেনশন:
  • একটি ছোট LM368 Amp, একটি রিসিফায়ার এবং একটি RC-low-pass-filter সহ একটি কনডেন্সার মাইক্রোফোন
  • আরেকটি এনালগ ইনপুট দিয়ে আমি RGBPotMixer- ফাংশনটি ব্যবহার করে মাইক-সিগন্যাল পেয়ে রঙ পরিবর্তন করি।

* * * PWM ব্যবহার করে ক্রস-ফেইডিং 3 LEDs, লাল, সবুজ এবং নীল, অথবা একটি ত্রি-রঙের LED এর জন্য কোড

  • প্রোগ্রাম ধীরে ধীরে লাল থেকে সবুজ, সবুজ থেকে নীল এবং নীল থেকে লাল হয়ে যায়
  • ডিবাগিং কোডটি Arduino 0004 অনুমান করে, কারণ এটি নতুন Serial.begin ()-স্টাইল ফাংশন ব্যবহার করে
  • মূলত ক্লে শির্কির "dimmingLEDs"

*

  • RGB ফেইড স্পীড পরিবর্তনের জন্য পিন A0 এ AnalogRead সক্ষম করা হয়েছে
  • হিউআরজিবি রঙ পরিবর্তনের জন্য পিন এ 2 তে অ্যানালগ রিড সক্ষম করা হয়েছে

* * */#অন্তর্ভুক্ত // Outputint ledPin = 13; // ডিবাগিংয়ের জন্য controlPin redPin = 9; // লাল LED, ডিজিটাল পিন 9int greenPin = 10 এর সাথে সংযুক্ত; // সবুজ LED, ডিজিটাল পিন 10int bluePin = 11 এর সাথে সংযুক্ত; // নীল LED, ডিজিটাল পিন 11int dimredPin = 3 এর সাথে সংযুক্ত; // এনালগ ডিমিং ভ্যালুর জন্য পিন, ট্রানজিস্টর চালকের সাথে সংযুক্ত dimgreenPin = 5; int dimbluePin = 6; // ইনপুটিন্ট সুইচপিন = 2; // সুইচ পিন D2int val = 0 এর সাথে সংযুক্ত; // পিন স্ট্যাটাসিন্ট বাটন স্টেট পড়ার জন্য পরিবর্তনশীল; // ভেরিয়েবল বাটন স্টেটিন্ট বাটন চেপে ধরে = 0; // 3 টিপুন! Int potPin0 = 0; // মুডল্যাম্পে ফেইডিংয়ের মধ্যে বিলম্ব সামঞ্জস্য করার জন্য পাত্র; int potPin2 = 2; // হিউআরজিবি রঙিন পটভ্যাল = 0 পরিবর্তনের জন্য পোটেন্টিওমিটার আউটপুট; // potentiometerint maxVal = 0 থেকে ইনপুট সংরক্ষণ করার জন্য পরিবর্তনশীল; // ডিমিং ফ্যাক্টর ডিফল্ট সংরক্ষণ করার মান হল 255, যদি কোন পট সংযুক্ত না থাকে dimPin = 4; // উজ্জ্বলতা ম্লান করতে A4 এর সাথে সংযুক্ত পট // প্রোগ্রাম ভেরিয়েবলসিন্ট রেডভাল = 255; // ভেরিয়েবলগুলি পিনসিন্ট গ্রিনভ্যাল = 1 এ পাঠানোর জন্য মান সংরক্ষণ করতে; // প্রাথমিক মান হল লাল পূর্ণ, সবুজ এবং নীল অফিন্ট blueVal = 1; int i = 0; // লুপ কাউন্টার int অপেক্ষা; // = 15; // 50ms (.05 সেকেন্ড) বিলম্ব; দ্রুত fadesint k = 0 এর জন্য ছোট করুন; // ব্লিঙ্ক-ফাংশনে DEBUG = 0 এ কন্ট্রোল LED এর মান; // ডিবাগ কাউন্টার; যদি 1 তে সেট করা হয়, সিরিয়ালিন্ট LCD = 0 এর মাধ্যমে মানগুলি লিখবে; // এলসিডি কাউন্টার; যদি 1 এ সেট করা হয়, সিরিয়ালভয়েড সেটআপ () {pinMode (ledPin, OUTPUT) এর মাধ্যমে মানগুলি লিখবে; পিনমোড (রেডপিন, আউটপুট); // পিনগুলিকে আউটপুট পিনমোড (গ্রীনপিন, আউটপুট) হিসাবে সেট করে; পিনমোড (নীলপিন, আউটপুট); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // পিনগুলিকে আউটপুট pinMode (dimbluePin, OUTPUT) হিসাবে সেট করে; pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // পিনমোড (ডিমপিন, ইনপুট); // পিনমোড (সুইচপিন, ইনপুট); // সুইচ পিন ইনপুট সংযুক্তি হিসাবে সেট করুন if (DEBUG) {// যদি আমরা ডিবাগ করার জন্য পিনের মান দেখতে চাই… Serial.begin (9600); //… 0004 স্টাইলে সিরিয়াল আউটপুট সেট আপ করুন}} // প্রধান প্রোগ্রামভয়েড লুপ () {যদি (buttonPresses == 0) {মুডল্যাম্প (); // মুডলাইট ফাংশনকে কল করে} যদি (buttonPresses == 1) {RGBPotMixer (); // কল ম্যানুয়েল মিক্স ফাংশন} যদি (buttonPresses == 2) {হোয়াইট (); // এখানে সব সাদা আছে} যদি (buttonPresses == 3) {} // মুডল্যাম্প (); // RGBPotMixer (); // সাদা (); মনিটর (); dim ();} void Monitor () {// মনিটরে স্টেট পাঠান যদি (DEBUG) {// যদি আমরা DEBUG += 1 আউটপুট পড়তে চাই; // DEBUG কাউন্টার বাড়ান যদি (DEBUG> 10) {// প্রতি 10 টি লুপ DEBUG = 1 মুদ্রণ করুন; // কাউন্টার রিসেট করুন Serial.print (i); // 0004 স্টাইলে সিরিয়াল কমান্ড সিরিয়াল.প্রিন্ট ("\ t"); // একটি ট্যাব প্রিন্ট করুন Serial.print ("R:"); // নির্দেশ করুন যে আউটপুট হল লাল মান Serial.print (redVal); // মুদ্রণ লাল মান Serial.print ("\ t"); // একটি ট্যাব প্রিন্ট করুন Serial.print ("G:"); // সবুজ এবং নীল জন্য পুনরাবৃত্তি… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, একটি ক্যারেজ রিটার্ন Serial.print ("\ t") দিয়ে শেষ করতে হবে; সিরিয়াল.প্রিন্ট ("dimValue:"); Serial.print (maxVal); // println, একটি ক্যারেজ রিটার্ন Serial.print ("\ t") দিয়ে শেষ করতে হবে; সিরিয়াল.প্রিন্ট ("অপেক্ষা করুন:"); সিরিয়াল.প্রিন্ট (অপেক্ষা); // মনিটরে পটপিন 0 এর মান লিখেছে Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // মনিটরে পটপিন 0 এর মান লিখেছে Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // মনিটরে পটপিন 0 এর মান লিখেছে Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // বোতামের মান লিখে মনিটরে চাপ দেয়}}} void dim () // হোয়াইট ডিম করার ফাংশন // হয়তো পরে সব মোডের জন্য {maxVal = analogRead (dimPin); maxVal /= 4; // 0..1024 থেকে এনালগ পরিসীমা 0..255 মান ডাল করার জন্য খুব বেশি analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} অকার্যকর মুডল্যাম্প () {অপেক্ষা = analogRead (potPin0); // potPin0 থেকে মান সন্ধান করুন; // যদি কোন পট সংযুক্ত না থাকে: অপেক্ষা করুন 255 i += 1; // ইনক্রিমেন্ট কাউন্টার // i = i - maxVal; যদি (i <255) // ফেইডের প্রথম ধাপ {redVal -= 1; // লাল নিচে সবুজভাল += 1; // সবুজ আপ blueVal = 1; // নীল কম} অন্যথায় যদি (i <509) // দ্বিতীয় পর্যায়ের বিবর্ণ {redVal = 1; // লাল কম সবুজভ্যাল -= 1; // সবুজ নিচে নীলভ্যাল += 1; // নীল আপ} অন্যথায় যদি (i <763) // তৃতীয় পর্যায়ের বিবর্ণ {redVal += 1; // লাল আপ greenVal = 1; // সবুজ lo2 blueVal -= 1; // নীল নিচে} অন্য // কাউন্টারটি পুনরায় সেট করুন, এবং আবার ফেইড শুরু করুন {i = 1; } // আমরা শুধু "redVal" এর পরিবর্তে "255 -redVal" করি কারণ // LED গুলি Gnd analogWrite (redPin, 255 - redVal) এর পরিবর্তে +5V পর্যন্ত সংযুক্ত থাকে; // LED পিনগুলিতে বর্তমান মান লিখুন analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // dimming dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (greenVal - maxVal, 255); dimgreenVal = সর্বোচ্চ (greenVal - maxVal, 0); dimblueVal = min (blueVal - maxVal, 255); dimblueVal = সর্বোচ্চ (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // LED পিনগুলিতে বর্তমান মান লিখুন analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / অপেক্ষা / = 4; বিলম্ব (অপেক্ষা); // লুপ পুনরায় শুরু করার আগে 'অপেক্ষা' মিলিসেকেন্ডের জন্য বিরতি দিন} অকার্যকর RGBPotMixer () {potVal = analogRead (potPin2); // ইনপুট পিন potVal = potVal / 4 এ potentiometer মান পড়ুন; // 0-1023 থেকে 0-255 hue_to_rgb (potVal) এ রূপান্তর করুন; // potVal কে রঙ হিসেবে বিবেচনা করুন এবং rgb vals এ রূপান্তর করুন // "255-" এর কারণ হল আমাদের কাছে কমন-অ্যানোড এলইডি আছে, কমন-ক্যাথোড এনালগ রাইট নয় (redPin, 255-redVal); // LED পিনের মান লিখুন analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } অকার্যকর সাদা () {analogWrite (redPin, maxVal); // LED পিনগুলিতে মান লিখুন analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • একটি ভেরিয়েবল হিউ 'h' দেওয়া হয়েছে, যা 0-252 থেকে রেঞ্জ,
  • আরজিবি রঙ মান যথাযথভাবে সেট করুন।
  • সর্বাধিক মান পরিপূর্ণতা এবং সর্বোচ্চ মান (উজ্জ্বলতা)
  • সম্পূর্ণরূপে পূর্ণসংখ্যা গণিত সঞ্চালন, কোন ভাসমান বিন্দু।

*/void hue_to_rgb (বাইট হিউ) {if (hue> 252) hue = 252; // 252 এ স্টেটব্যাক !! নেজো বাইট এইচডি = হিউ / 42; // 36 == 252/7, 252 == H_MAX বাইট হাই = hd % 6; // 0-5 বাইট f = হিউ % 42 দেয়; বাইট fs = f * 6; সুইচ (হাই) {কেস 0: রেডভাল = 252; greenVal = fs; blueVal = 0; বিরতি; কেস 1: redVal = 252-fs; greenVal = 252; blueVal = 0; বিরতি; কেস 2: রেডভ্যাল = 0; greenVal = 252; blueVal = fs; বিরতি; কেস 3: রেডভ্যাল = 0; greenVal = 252-fs; blueVal = 252; বিরতি; কেস 4: রেডভাল = এফএস; greenVal = 0; blueVal = 252; বিরতি; কেস 5: রেডভাল = 252; greenVal = 0; blueVal = 252-fs; বিরতি; }} void isr0 () {Serial.println ("\ n / n inerrupt / n"); buttonState = digitalRead (switchPin); // প্রাথমিক অবস্থা বিলম্ব পড়ুন মাইক্রোসেকেন্ড (100000); // if (val! = buttonState) {// বোতামের অবস্থা পরিবর্তিত হয়েছে! // if (buttonState == HIGH) {// বাটনটি এখন বোতাম টিপে আছে কিনা তা পরীক্ষা করুন ++ চাপুন; //} // val = buttonState; // আমাদের ভেরিয়েবলে নতুন অবস্থা সংরক্ষণ করুন যদি (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} পরবর্তী পর্যায়ে ছিল ট্রানজিস্টর-ড্রাইভার। আমি 3Ppe ট্রানজিস্টর ব্যবহার করেছি 3Ampere- এ সর্বোচ্চ কারেন্ট সহ। ফরোয়ার্ড-কারেন্ট এবং ভোল্টেজ নিয়ন্ত্রিত হওয়ার পরে, LEDemitter সম্পূর্ণ তীব্রতার সাথে দুর্দান্ত কাজ করেছে।

ধাপ 6: পনিপ্রগ-পোড়া বুটলোডারের সাথে এটি স্বতন্ত্র করুন

পনিপ্রগ-পোড়া বুটলোডারের সাথে এটি স্বতন্ত্র পান
পনিপ্রগ-পোড়া বুটলোডারের সাথে এটি স্বতন্ত্র পান

কিভাবে আপনার প্যারালেল পোর্টটি ব্যবহার করে একটি arduino বুটলোডারকে ATmega168 বা ATmega8 এ জ্বালিয়ে arduino এনভায়রনমেন্ট ডট কমিং এর সাথে একটি সস্তা ফাঁকা চিপ ব্যবহার করতে হবে….. হয়তো একটি পৃথক নির্দেশে এখানে চিপটি স্বতন্ত্র ব্যবহার করার জন্য একটি ভাল নির্দেশনাও রয়েছে: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?

ধাপ 7: সুতরাং এটি আমার আরডুইনো মুডল্যাম্প

সুতরাং যে আমার Arduino মুডল্যাম্প
সুতরাং যে আমার Arduino মুডল্যাম্প

যদি আপনি এটি পছন্দ করেন, দয়া করে আমাকে রেট দিন।

প্রস্তাবিত: