সুচিপত্র:

LED সর্পিল গাছ: 4 ধাপ (ছবি সহ)
LED সর্পিল গাছ: 4 ধাপ (ছবি সহ)

ভিডিও: LED সর্পিল গাছ: 4 ধাপ (ছবি সহ)

ভিডিও: LED সর্পিল গাছ: 4 ধাপ (ছবি সহ)
ভিডিও: আপনার ফোনের জন্য বেস্ট স্ক্রীন প্রটেক্টর কোনটি। জানেন কি? 2024, জুলাই
Anonim
LED সর্পিল গাছ
LED সর্পিল গাছ
LED সর্পিল গাছ
LED সর্পিল গাছ
LED সর্পিল গাছ
LED সর্পিল গাছ

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

ধাপ 1: নিয়ামক

নিয়ন্ত্রক
নিয়ন্ত্রক
নিয়ন্ত্রক
নিয়ন্ত্রক
নিয়ন্ত্রক
নিয়ন্ত্রক

আমি নন-অ্যাড্রেসযোগ্য আরজিবি এলইডি ব্যবহার করার সিদ্ধান্ত নিয়েছি। এর মানে হল আমি একটি প্রোগ্রামড এফেক্ট পেতে পারি কিন্তু সব এলইডি একই সাথে রঙ পরিবর্তন করে। এর মানে হল একটি নিয়ামক প্রয়োজন হবে। আমি একটি arduino uno ব্যবহার করতে পারতাম এবং একটি RGB ieldাল ব্যবহার করে প্রাথমিক পরীক্ষা করতে পারতাম কিন্তু একটি খালি Atmega328 চিপ সহ একটি কাস্টম একক বোর্ড ব্যবহার করে শেষ করেছি। শুধু টার্গেট প্রোগ্রামার স্যুইচ করতে হবে এবং সরাসরি চিপ প্রোগ্রাম করতে হবে।

আমি অন্যান্য বাতি প্রকল্প থেকে এই বোর্ড প্রচুর বাকি ছিল। একটি সস্তা ইনলাইন preprogrammed নিয়ামক ব্যবহার করতে নির্দ্বিধায় যেমন আমি আমার ছাতা উপর করেছি।

আমি গাছের ভিত্তি হিসাবে একটি ধীর ক্রসফেড ডেমো ব্যবহার করে শেষ করেছি।

/** ক্রস-ফেডিং 3 এলইডি, লাল, সবুজ এবং নীল (RGB) কোড * বিবর্ণ তৈরি করতে, আপনাকে দুটি জিনিস করতে হবে: * 1. আপনি যে রংগুলি প্রদর্শন করতে চান তা বর্ণনা করুন * 2. আপনি যে অর্ডারটি চান তা তালিকাভুক্ত করুন সেগুলি বিবর্ণ হয়ে যায় লাল = {100, 0, 0} * ডিম হোয়াইট তিনটি এলইডি 30% * int dimWhite = {30, 30, 30} * ইত্যাদি। * * কিছু সাধারণ রং নিচে দেওয়া হয়েছে, অথবা আপনার নিজের তৈরি করুন * * তালিকাভুক্ত করুন অর্ডার: * প্রোগ্রামের মূল অংশে, আপনাকে অর্ডার তালিকাভুক্ত করতে হবে * আপনি রং দেখতে চান, যেমন * ক্রসফেড (লাল); * ক্রসফেড (সবুজ); * ক্রসফেড (নীল); * * সেই রঙগুলি সেই ক্রমে প্রদর্শিত হবে, * এক রঙের বাইরে এবং পরেরটিতে ফেইড হবে মধ্যে), কিন্তু * আপনি প্রাথমিক রঙকে অন্য কোন রং হিসেবে সেট করতে পারেন * 2. অভ্যন্তরীণ লুপ 1020 ইন্টিগ্রেশনের জন্য চলে; 'অপেক্ষা' পরিবর্তনশীল * একটি একক ক্রসফেডের আনুমানিক সময়কাল নির্ধারণ করে। তত্ত্বে, * 10 ms এর একটি 'অপেক্ষা' cross 10 সেকেন্ডের একটি ক্রসফেড করা উচিত। * অনুশীলনে, অন্যান্য ফাংশন কোডটি ধীর গতিতে সম্পাদন করছে * আমার বোর্ডে ~ 11 সেকেন্ডে। YMMV। * 3. যদি 'পুনরাবৃত্তি' 0 এ সেট করা হয়, তাহলে প্রোগ্রামটি অনির্দিষ্টকালের জন্য লুপ হবে। * যদি এটি একটি সংখ্যায় সেট করা হয়, তবে এটি সেই সংখ্যাটি লুপ করবে, * তারপর ক্রমের শেষ রঙে থামুন। ('রিটার্ন' কে 1, * তে সেট করুন এবং শেষের রঙটি কালো করুন যদি আপনি শেষের দিকে ফিকে হয়ে যেতে চান।) * 4. একটি alচ্ছিক 'হোল্ড' ভেরিয়েবল আছে, যা 'হোল্ড' মিলিসেকেন্ডের জন্য * প্রোগ্রামটি পাস করে একটি রঙ সম্পূর্ণ, * কিন্তু পরবর্তী রঙ শুরু হওয়ার আগে। * 5. ডিবাগ পতাকা 1 তে সেট করুন যদি আপনি ডিবাগিং আউটপুট * সিরিয়াল মনিটরে পাঠাতে চান। * * প্রোগ্রামের অভ্যন্তরীণগুলি জটিল নয়, তবে তারা * একটু চঞ্চল - অভ্যন্তরীণ কাজগুলি * মূল লুপের নীচে ব্যাখ্যা করা হয়েছে। * * এপ্রিল 2007, ক্লে শিরকি *

/ আউটপুট

int grnPin = 9; // সবুজ LED, ডিজিটাল পিন 10 int redPin = 10 এর সাথে সংযুক্ত; // লাল LED, ডিজিটাল পিন 9 ইন্ট ব্লুপিন = 11 এর সাথে সংযুক্ত; // নীল LED, ডিজিটাল পিন 11 এর সাথে সংযুক্ত

// রঙের অ্যারে

int black [3] = {0, 0, 0}; int white [3] = {100, 100, 100}; int red [3] = {100, 0, 0}; int green [3] = {0, 100, 0}; int blue [3] = {0, 0, 100}; int হলুদ [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // ইত্যাদি

// প্রাথমিক রঙ সেট করুন

int redVal = কালো [0]; int grnVal = কালো [1]; int bluVal = কালো [2];

int অপেক্ষা = 3; // 10ms অভ্যন্তরীণ ক্রসফেড বিলম্ব; ধীর বিবর্ণ জন্য বৃদ্ধি

int hold = 0; // একটি রঙ সম্পূর্ণ হলে Oচ্ছিক হোল্ড, পরবর্তী ক্রসফেড int DEBUG = 0 এর আগে; // ডিবাগ কাউন্টার; যদি 1 এ সেট করা হয়, সিরিয়াল int loopCount = 60 এর মাধ্যমে মানগুলি লিখবে; // কতবার DEBUG রিপোর্ট করা উচিত? int পুনরাবৃত্তি = 0; // বন্ধ করার আগে আমাদের কতবার লুপ করা উচিত? (0 কোন বিরতির জন্য) int j = 0; // পুনরাবৃত্তির জন্য লুপ কাউন্টার

// রঙের ভেরিয়েবল শুরু করুন

int prevR = redVal; int prevG = grnVal; int prevB = bluVal;

// LED আউটপুট সেট আপ করুন

অকার্যকর সেটআপ () {পিনমোড (রেডপিন, আউটপুট); // আউটপুট pinMode (grnPin, OUTPUT) হিসাবে পিন সেট করে; পিনমোড (ব্লুপিন, আউটপুট);

if (DEBUG) {// যদি আমরা ডিবাগ করার মান দেখতে চাই …

Serial.begin (9600); //… সিরিয়াল আউটপুট সেট আপ করুন}}

// প্রধান প্রোগ্রাম: ক্রসফেড ক্রম তালিকা

অকার্যকর লুপ () {ক্রসফেড (লাল); ক্রসফেড (সবুজ); ক্রসফেড (নীল); ক্রসফেড (হলুদ);

যদি (পুনরাবৃত্তি) {// আমরা কি সীমিত সংখ্যক বার লুপ করি?

j += 1; যদি (j> = পুনরাবৃত্তি) {// আমরা এখনও সেখানে আছি? প্রস্থান (জে); // যদি তাই হয়, বন্ধ করুন। }}}

/* নীচের এই লাইনটি গণিত - আপনাকে এই বেসিকগুলির জন্য এটি পরিবর্তন করতে হবে না

* * প্রোগ্রামটি এভাবে কাজ করে: * একটি ক্রসফেড কল্পনা করুন যা লাল LED কে 0-10 থেকে, * 0-5 থেকে সবুজ এবং 10 থেকে 7 পর্যন্ত নীলকে * দশ ধাপে সরায়। * আমরা 10 টি ধাপ গণনা করতে চাই এবং সমানভাবে ধাপে ধাপে বর্ধিত রঙের মান বাড়াতে বা হ্রাস করতে চাই। * কল্পনা করুন a + 1 দ্বারা একটি মান বাড়ানোর নির্দেশ করে, এবং a - * এটি হ্রাস করার সমান। আমাদের 10 ধাপের বিবর্ণতা দেখতে এইরকম হবে: দশ ধাপে 0 থেকে 10, 5 টি ধাপে * 0-5 থেকে সবুজ, এবং তিনটি ধাপে 10 থেকে 7 পর্যন্ত নীল পড়ে। * * আসল প্রোগ্রামে, রঙের শতাংশগুলি * 0-255 মানগুলিতে রূপান্তরিত হয় এবং 1020 ধাপ (255 * 4) রয়েছে। * * LED মানগুলির মধ্যে একটি আপ-অথবা * ডাউন-টিকের মধ্যে কত বড় ধাপ থাকা উচিত তা বের করার জন্য, আমরা calcStep (), * কে কল করি যা শুরু এবং শেষের মানগুলির মধ্যে পরম ব্যবধান গণনা করে, এবং তারপর মানটি সমন্বয়ের মধ্যে ধাপের আকার নির্ধারণ করতে 1020 দ্বারা সেই ফাঁকটি ভাগ করে। */

int calcStep (int prevValue, int endValue) {

int ধাপ = endValue - prevValue; // সামগ্রিক ফাঁক কি? যদি (ধাপ) {// যদি এটি শূন্য নয়, ধাপ = 1020/ধাপ; // 1020 দ্বারা ভাগ করুন রিটার্ন স্টেপ; }

/* পরবর্তী ফাংশন হল calcVal। যখন লুপ মান, আমি, * * রঙের একটির জন্য উপযুক্ত ধাপের আকারে পৌঁছে, এটি সেই রঙের মান 1 দ্বারা বৃদ্ধি বা হ্রাস করে। * (R, G, এবং B প্রতিটি আলাদাভাবে গণনা করা হয়।) */

int calcVal (int ধাপ, int val, int i) {

যদি ((ধাপ) && আমি % ধাপ == 0) {// যদি ধাপটি শূন্য নয় এবং মান পরিবর্তন করার সময় হয়, যদি (ধাপ> 0) {// ধাপ ইতিবাচক হলে মান বৃদ্ধি করুন … val += 1; } অন্যথায় যদি (ধাপ 255) {val = 255; } অন্যথায় যদি (val <0) {val = 0; } রিটার্ন ভ্যাল; }

/* ক্রসফেড () শতাংশের রঙকে a তে রূপান্তর করে

* 0-255 পরিসীমা, তারপর 1020 বার লুপ, যাচাই করে দেখতে হবে যে * প্রতিবার মান আপডেট করা প্রয়োজন কিনা, তারপর * সঠিক পিনগুলিতে রঙের মান লিখুন। */

অকার্যকর ক্রসফেড (ইন্ট কালার [3]) {

// 0-255 int R = (কালার [0] * 255) / 100 এ রূপান্তর করুন; int G = (রঙ [1] * 255) / 100; int B = (রঙ [2] * 255) / 100;

int stepR = calculate ধাপ (prevR, R);

int stepG = calculate ধাপ (prevG, G); int stepB = calculate ধাপ (prevB, B);

জন্য (int i = 0; i <= 1020; i ++) {redVal = calculateVal (stepR, redVal, i); grnVal = calcVal (stepG, grnVal, i); bluVal = calculateVal (stepB, bluVal, i);

analogWrite (redPin, redVal); // LED পিনগুলিতে বর্তমান মান লিখুন

analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);

বিলম্ব (অপেক্ষা); // লুপ পুনরায় শুরু করার আগে 'অপেক্ষা' মিলিসেকেন্ডের জন্য বিরতি দিন

যদি (DEBUG) {// যদি আমরা সিরিয়াল আউটপুট চাই, তাহলে এটি প্রিন্ট করুন

যদি (i == 0 বা i % loopCount == 0) {// শুরু, এবং প্রতিটি loopCount বার সিরিয়াল.প্রিন্ট ("লুপ/RGB: #"); সিরিয়াল.প্রিন্ট (i); সিরিয়াল.প্রিন্ট ("|"); Serial.print (redVal); সিরিয়াল.প্রিন্ট (" /"); সিরিয়াল.প্রিন্ট (grnVal); সিরিয়াল.প্রিন্ট (" /"); Serial.println (bluVal); } ডিবাগ += 1; }} // পরবর্তী লুপের জন্য বর্তমান মান আপডেট করুন prevR = redVal; prevG = grnVal; prevB = ব্লুভাল; বিলম্ব (ধরে রাখা); // লুপ পুনরায় শুরু করার আগে waitচ্ছিক 'অপেক্ষা' মিলিসেকেন্ডের জন্য বিরতি দিন}

ধাপ 2: গাছ মোড়ানো

গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো
গাছ মোড়ানো

আমি ওয়াটারপ্রুফ স্ট্রিপ ব্যবহার করেছি কারণ এগুলি বাইরে থাকবে। তারা নিজেরাই লেগেছিল কিন্তু আমি তাড়াতাড়ি তারের বন্ধনগুলি অনুসরণ করেছিলাম যাতে তারা নিশ্চিত থাকে। সহজ এবং সহজ হ্যাক। স্ট্রিপের ফিডথ্রু পাওয়ার ক্ষমতাটি বিদ্যুৎ সরবরাহকে নীচের অংশে খাওয়ানো এবং তারকা থেকে উপরের দিকে পাওয়ার সহজ করে তোলে।

ধাপ 3: উপরে তারকা ভুলে যাবেন না

উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না
উপরে তারকা ভুলে যাবেন না

তারকার জন্য আমি কিছু মনোযোগ পেতে 10W চিপের একটি জোড়া ব্যবহার করেছি। আমি তাদের একটি হিটসিংক হিসাবে একটি তামার শীটে বিক্রি করেছি। আমি একটু স্ট্রিপ ব্যবহার করতে পারতাম যেহেতু একটু বাকি ছিল।

ধাপ 4: এটি চেষ্টা করে দেখুন

Image
Image

প্রথম চেষ্টা খুব দ্রুত গতি ছিল…।

একবার আমি এটি শান্ত করেছিলাম এটি বেশ ভাল লাগছিল।

প্রস্তাবিত: