সুচিপত্র:

একটি Arduino LED মুড কিউব উন্নত করা (সহজ) (ভিডিও অন্তর্ভুক্ত): 4 টি ধাপ
একটি Arduino LED মুড কিউব উন্নত করা (সহজ) (ভিডিও অন্তর্ভুক্ত): 4 টি ধাপ

ভিডিও: একটি Arduino LED মুড কিউব উন্নত করা (সহজ) (ভিডিও অন্তর্ভুক্ত): 4 টি ধাপ

ভিডিও: একটি Arduino LED মুড কিউব উন্নত করা (সহজ) (ভিডিও অন্তর্ভুক্ত): 4 টি ধাপ
ভিডিও: ৫০ লাখ টাকার ড্রোনের কি হাল| Dji Drone crash | #travel #shorts #Eat&Travelwithmamun 2024, জুলাই
Anonim
একটি Arduino LED মুড কিউব উন্নত (সহজ) (ভিডিও অন্তর্ভুক্ত)
একটি Arduino LED মুড কিউব উন্নত (সহজ) (ভিডিও অন্তর্ভুক্ত)

'আর্ল' দ্বারা নির্মিত একটি LED ছোট মুড কিউব প্রকল্প দেখার পর, আমি LED মুড কিউবের একটি উন্নত সংস্করণ করার সিদ্ধান্ত নিয়েছি। আমার সংস্করণটি আসল সংস্করণের চেয়ে আরও জটিল হবে, কারণ এটি মূলটির চেয়ে কিছুটা বড় হবে, মূল ঘনক্ষেত্রের সাথে তুলনা করে আরও দুটি রঙ থাকবে (হলুদ এবং সাদা যোগ করা হয়েছে), অসীম পরিমাণে রঙের ঘূর্ণন ইত্যাদি। যারা তারের সাথে এলইডি লাইট সংযুক্ত করার ধারণাটি বোঝেন তাদের জন্য এলইডি লাইটের আরও ব্যবহারের অনুশীলন করার জন্য এটি একটি ভাল প্রকল্প হওয়া উচিত।

ধাপ 1: উপকরণ

উপকরণ
উপকরণ
উপকরণ
উপকরণ

এই মুড কিউব তৈরির জন্য আপনাকে কিছু উপকরণ দেওয়া হবে:

  • ব্রেডবোর্ড
  • Arduino - (আমার এখানে লিওনার্দো আছে)
  • আরডুইনো পাওয়ার সাপ্লাই / ইউএসবি কেবল
  • ব্রেডবোর্ড
  • জাম্পার ওয়্যার (তাদের অনেকগুলি, আমি 29 টি তার ব্যবহার করেছি)
  • লাল LED x 2
  • নীল LED x 2
  • সবুজ LED x 2
  • হলুদ LED x 2
  • সাদা LED x 1
  • 9 প্রতিরোধক
  • ব্রেডবোর্ডের জন্য যথেষ্ট বড় বাক্স (আমি একটি জুতার বাক্স ব্যবহার করেছি)
  • ব্যবহার্য ছুরি
  • কাগজ

ধাপ 2: কোড

এখানে দেওয়া কোডের জন্য কিছু ব্যাখ্যা:

কোডগুলির ক্রেডিট আমার প্রকল্পের মূল উৎসে যায় কারণ প্রকল্পের সম্পাদক এই কোডগুলি তৈরি করেছেন। আমি কেবল তাদের কিছুকে আরো জটিল করে উন্নত করেছি। কিছু কোডে, আপনি শেষ পর্যন্ত // see দেখতে পারেন। এর মানে হল যে এই কোডটি আমার দ্বারা সম্পাদিত হয়েছে, তাই এটি আমার মূল উৎস থেকে আলাদা।

আমি Arduino ক্রিয়েটর কোডের একটি সংস্করণ আছে।

/* ক্রস-ফেইডিং 3 এলইডি কোড, লাল, সবুজ এবং নীল (RGB) বিবর্ণ করতে, আপনাকে দুটি জিনিস করতে হবে: 1. আপনি যে রংগুলি প্রদর্শন করতে চান তা বর্ণনা করুন 2. আপনি যে ক্রমটি ফিকে করতে চান তার তালিকা দিন

একটি রঙ বর্ণনা:

একটি রঙ মাত্র তিন শতাংশের একটি অ্যারে, 0-100, লাল, সবুজ এবং নীল LEDs নিয়ন্ত্রণ করে

লাল হল লাল, সম্পূর্ণ নীল এবং সবুজ বন্ধ LED

int red = {100, 0, 0} Dim white হল তিনটি LEDs 30% int dimWhite = {30, 30, 30} ইত্যাদি।

কিছু সাধারণ রং নীচে দেওয়া হয়েছে, অথবা আপনার নিজের তৈরি করুন

আদেশ তালিকাভুক্ত করা:

প্রোগ্রামের মূল অংশে, আপনি যে অর্ডারে রং দেখতে চান তার তালিকা করতে হবে, যেমন ক্রসফেড (লাল); ক্রসফেড (সবুজ); ক্রসফেড (নীল);

সেই রঙগুলি সেই ক্রমে উপস্থিত হবে, ফেইড আউট

এক রঙ এবং পরের রঙে

এছাড়াও, এখানে 5 টি alচ্ছিক সেটিংস রয়েছে যা আপনি সামঞ্জস্য করতে পারেন:

1. প্রাথমিক রঙটি কালোতে সেট করা হয়েছে (তাই প্রথম রঙটি ফিকে হয়ে যায়), কিন্তু আপনি প্রাথমিক রঙটিকে অন্য কোন রঙে সেট করতে পারেন 2. অভ্যন্তরীণ লুপ 1020 ইন্টিগ্রেশনের জন্য চলে; 'অপেক্ষা' পরিবর্তনশীল একটি একক ক্রসফেডের আনুমানিক সময়কাল নির্ধারণ করে। তত্ত্বে, 10 ms এর একটি 'অপেক্ষা' ~ 10 সেকেন্ডের একটি ক্রসফেড করা উচিত। অনুশীলনে, অন্যান্য ফাংশন কোডটি আমার বোর্ডে slow 11 সেকেন্ডে ধীর গতিতে সম্পাদন করছে। YMMV। 3. যদি 'পুনরাবৃত্তি' 0 এ সেট করা হয়, তাহলে প্রোগ্রামটি অনির্দিষ্টকালের জন্য লুপ হবে। যদি এটি একটি সংখ্যায় সেট করা হয়, এটি সেই সংখ্যাটি লুপ করবে, তারপর ক্রমের শেষ রঙে থামবে। ('রিটার্ন' কে 1 তে সেট করুন, এবং শেষ রঙটি কালো করুন যদি আপনি শেষের দিকে ফিকে হয়ে যেতে চান।) 4. একটি alচ্ছিক 'হোল্ড' ভেরিয়েবল রয়েছে, যা একটি রঙ হলে 'হোল্ড' মিলিসেকেন্ডের জন্য প্রোগ্রামটি পাস করে সম্পূর্ণ, কিন্তু পরবর্তী রঙ শুরু হওয়ার আগে। 5. আপনি ডিবাগিং আউটপুট সিরিয়াল মনিটরে পাঠাতে চাইলে DEBUG পতাকা 1 তে সেট করুন।

প্রোগ্রামের অভ্যন্তরীণগুলি জটিল নয়, তবে তারা

একটু চঞ্চল - ভিতরের কাজগুলি মূল লুপের নীচে ব্যাখ্যা করা হয়েছে।

এপ্রিল 2007, ক্লে শিরকি

*

/ আউটপুট

int ylwPin = 5; // হলুদ LED, ডিজিটাল পিন 5 // 改 int redPin = 6 এর সাথে সংযুক্ত; // লাল LED, ডিজিটাল পিন 6 // 改 int grnPin = 7 এর সাথে সংযুক্ত; // সবুজ LED, ডিজিটাল পিন 7 // 改 int bluPin = 8 এর সাথে সংযুক্ত; // নীল LED, ডিজিটাল পিন 8 // 改 int whiPin = 9 এর সাথে সংযুক্ত; // সাদা LED, ডিজিটাল পিন 9 // 改 int ylwPin2 = 10 এর সাথে সংযুক্ত; // হলুদ LED, ডিজিটাল পিন 10 // 改 int redPin2 = 11 এর সাথে সংযুক্ত; // লাল LED, ডিজিটাল পিনের সাথে সংযুক্ত 11 // gr int grnPin2 = 12; // সবুজ LED, ডিজিটাল পিনের সাথে সংযুক্ত 12 // 改 int bluPin2 = 13; // নীল LED, ডিজিটাল পিন 13 // to এর সাথে সংযুক্ত

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

int black [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int white [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int red [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int green [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int blue [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100}; // 改 int হলুদ [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // 改 int purple [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int কমলা [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int pink [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // ইত্যাদি

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

int redVal = কালো [0]; int grnVal = কালো [1]; int bluVal = কালো [2]; int ylwVal = কালো [3]; // 改 int whiVal = কালো [4]; //

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

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

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

int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; //

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

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

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

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

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

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

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

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

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

প্রোগ্রাম এই মত কাজ করে:

একটি ক্রসফেড কল্পনা করুন যা 10-10 ধাপে লাল LED 0-10, সবুজ 0-5 থেকে এবং নীল 10 থেকে 7 পর্যন্ত সরায়। আমরা 10 টি ধাপ গণনা করতে চাই এবং সমানভাবে ধাপে বর্ধিত রঙের মান বৃদ্ধি বা হ্রাস করতে চাই। কল্পনা করুন a + 1 দ্বারা একটি মান বাড়ানোর ইঙ্গিত দেয়, এবং a - এটি হ্রাস করার সমান। আমাদের 10 ধাপ বিবর্ণ হবে:

1 2 3 4 5 6 7 8 9 10

R + + + + + + + + + + + + G + + + + + B - - -

লাল দশ ধাপে 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 বার লুপ, প্রতিটি সময় মান আপডেট করা প্রয়োজন কিনা তা পরীক্ষা করে, তারপর সঠিক পিনগুলিতে রঙের মানগুলি লিখুন। */

অকার্যকর crossFade (int color ) {// 改

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

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

int stepG = calculate ধাপ (prevG, G); int stepB = calculate ধাপ (prevB, B); int stepY = calculate ধাপ (prevY, Y); // 改 int stepW = calculate ধাপ (prevW, W); //

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

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

analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); analogWrite (ylwPin, ylwVal); // 改 analogWrite (whiPin, whiVal); // 改 analogWrite (grnPin2, grnVal); // 改 analogWrite (bluPin2, bluVal); // 改 analogWrite (ylwPin2, ylwVal); // 改 analogWrite (redPin2, redVal); //

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

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

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

ধাপ 3: সেট আপ করুন

সেট আপ
সেট আপ
সেট আপ
সেট আপ
সেট আপ
সেট আপ
  1. রুটি বোর্ড পান।
  2. তারের সংযোগের ডেমো যাতে একটি LED আলো জ্বলতে পারে:

    1. ব্রেডবোর্ডে এলইডি লাগান। লম্বা প্রান্তটি বাম দিকে এবং খাটো প্রান্তটি ডানদিকে রাখুন।
    2. LED এর লম্বা প্রান্তের সাথে একই সারিতে থাকা একটি স্থানে একটি জাম্পার তারের এক প্রান্ত রাখুন। ডিজিটাল PWM বিভাগে অন্য প্রান্তটি রাখুন। কোডটি হলুদ LED গুলিকে 10 এবং 5, লালগুলিকে 6 এবং 11, নীলগুলিকে 8 এবং 13, সবুজগুলিকে 7 এবং 12 এবং অবশেষে সাদা LED কে 9 এর সাথে সংযুক্ত করার জন্য নির্দিষ্ট করে।
    3. LED এর ছোট প্রান্তের সাথে একই সারিতে একটি প্রতিরোধকের এক প্রান্ত রাখুন। অন্য প্রান্তটি কাছাকাছি কোথাও রাখুন।
    4. একই সারির সাথে আরেকটি জাম্পার তারের একটি প্রান্ত রাখুন যা প্রতিরোধকের শেষের সাথে রয়েছে যা LED এর ছোট প্রান্তের সাথে একই সারিতে নেই। তারের অন্য প্রান্তটি নেগেটিভ চার্জ সারিতে রাখুন।
    5. নেগেটিভ চার্জ সারিতে আরেকটি জাম্পার তারের শেষ প্রান্ত বসান এবং এর অন্য প্রান্তটি GND- এ রাখুন।
  3. আপনি 9 টি LED জ্বলতে চান বলে 8 বার ধাপ 2 পুনরাবৃত্তি করুন
  4. বাক্সের ভিতরে রুটিবোর্ড রাখুন। এখানে কয়েকটি অনুস্মারক:

    1. আমি একটি পাওয়ার সাপ্লাই ব্যবহার করেছি। বাক্সের মধ্য দিয়ে যাওয়ার জন্য এবং রুটিবোর্ডের সাথে সংযোগ করতে একটি ইউটিলিটি ছুরি ব্যবহার করে আপনার তারের জন্য একটি ছোট গর্ত তৈরি করুন।
    2. নিশ্চিত করুন যে বাক্সটি একপাশে খোলা আছে। জুতার বাক্সের ইতিমধ্যেই একপাশ খোলা আছে। যদি বাক্সটি পুরোপুরি বন্ধ হয়ে যায়, তবে বাক্সের এক পাশ কেটে একটি খোলা জায়গা তৈরি করুন।
    3. কাগজ দিয়ে কিছুই না দিয়ে পাশ overেকে দিন। কাগজের মাধ্যমে এলইডি লাইট জ্বালানোর জন্য এটি।

প্রস্তাবিত: