সুচিপত্র:

এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর: 5 টি ধাপ
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর: 5 টি ধাপ

ভিডিও: এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর: 5 টি ধাপ

ভিডিও: এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর: 5 টি ধাপ
ভিডিও: IR Remote Control for Electronics device | IR Sensor | Bangla 2024, নভেম্বর
Anonim
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর
এলসিডি এবং আইআর সেন্সরের সাথে ইনফিনিটি মিরর

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

সরবরাহ

1. একটি ছায়া বাক্স ($ 50)

2. 1-উপায় মিরর ফিল্ম ($ 17)

3. একটি RGB LED লাইট স্ট্রিপ ($ 30)

4. Arduino ($ 35)

5. একটি আয়না ($ 10)

চ্ছিক:

1. আইআর সেন্সর এবং রিমোট ($ 20)

2. একটি LCD ($ 20)

7. মহিলা থেকে পুরুষ সংযোগকারী

4. পুরুষ থেকে পুরুষ সংযোগকারী

সরঞ্জাম

1. সোল্ডারিং আয়রন

2. ওয়্যার কাটার এবং স্ট্রিপার

3. আয়না দিয়ে কিছু কাটা

*নোট করুন CAD এবং মাপের সমস্ত দাম আপনার ব্যবহৃত বাক্সের উপর নির্ভর করবে।

ধাপ 1: মিরর এবং মিরর ফিল্ম ইনস্টল করা

মিরর এবং মিরর ফিল্ম ইনস্টল করা
মিরর এবং মিরর ফিল্ম ইনস্টল করা
মিরর এবং মিরর ফিল্ম ইনস্টল করা
মিরর এবং মিরর ফিল্ম ইনস্টল করা

প্রথম কাজটি হল ছায়া বাক্সের পিছনে থাকা আয়নাটি ইনস্টল করা। আপনি সঠিক আকারের একটি পেতে চান বা বড়টি পেতে চান এবং তারপর এটি কেটে ফেলুন। কিন্তু এর জন্য, আপনাকে একটি আয়না ব্যবহার করতে হবে এবং চলচ্চিত্রটি নয় কারণ আমরা চাই যে সমস্ত আলো প্রতিফলিত হোক, আয়না ফিল্মটি যদি এটি কাচের না হয় তবে এটি যে উপাদানটিতে রয়েছে তার প্যাটার্ন নিতে পারে।

যখন আপনি আয়নাটি ইনস্টল করছেন তখন নিশ্চিত করুন যে এটি ছায়া বাক্সে সুরক্ষিত আছে, আমি আয়নাটি নড়বে না তা নিশ্চিত করার জন্য কাঠের ছোট টুকরা এবং নখ ব্যবহার করার পরামর্শ দেব। আমার এই প্রকল্পটি সম্পন্ন করার সময় আমার কাছে আয়না ছিল না তাই আমি চলচ্চিত্রটি ব্যবহার করেছি (আপনি ছবিতে দেখতে পারেন)। ধারণাটি কার্যকর হয়েছে কিন্তু খুব ভাল নয় এবং একটি কোণযুক্ত এবং বিশৃঙ্খল চেহারা দেয় যা আমার মতে ভাল দেখায় না।

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

ধাপ 2: LED স্ট্রিপ সেট আপ করা

এলইডি স্ট্রিপ সেট আপ করা হচ্ছে
এলইডি স্ট্রিপ সেট আপ করা হচ্ছে
এলইডি স্ট্রিপ সেট আপ করা হচ্ছে
এলইডি স্ট্রিপ সেট আপ করা হচ্ছে

এলইডি -র জন্য আমি শুধু অন্তর্ভুক্ত ডবল পার্শ্বযুক্ত টেপটি ফ্রেমে আটকে রাখার জন্য ব্যবহার করেছি এবং তারের বাইরে বের হওয়ার জন্য একটি গর্ত তৈরি করেছি। প্রতিটি কোণে, আমি গোলাকার প্রান্ত ছাড়াই বাক্সের আকৃতি রাখার জন্য অন্য স্ট্রিপের সাথে সংযোগ স্থাপনের জন্য সিল্ডার করেছি। নিশ্চিত করুন যে শুধুমাত্র এমন পয়েন্টগুলিতে স্ট্রিপগুলি কাটতে হবে যেখানে এমন পরিচিতি আছে যা এইরকম হতে দেয় এবং LEDs একে অপরের সাথে সংযোগের দিকটি পরিবর্তন করে না যা মেরু বিপরীত হিসাবে পরিচিত। আমি যে স্ট্রিপটি পেয়েছিলাম তা নিশ্চিত করার জন্য তীরচিহ্ন ছিল যাতে এটি না ঘটে তাই নিশ্চিত করুন যে তারা সব একই দিকে নির্দেশ করছে।

আমি বাক্সের বাইরের দিকে কেবল স্থাপন করার জন্য একটি ছোট গর্ত করেছি, আমার কাছে যে LEDs ছিল সেগুলি 3 টি পিন ঠিকানাযোগ্য LEDs ছিল তাই আমার পাওয়ার, গ্রাউন্ড এবং ডেটা সংযোগকারী ছিল। আমি ডেটা কানেক্টরের জন্য ডিজিটাল পিন 3 ব্যবহার করেছি, আপনার LED স্ট্রিপগুলি ফ্রেমে আটকে রাখার আগে সেগুলি কাজ করে তা নিশ্চিত করতে এবং আমার 5 - 6 V এর জন্য শুধুমাত্র প্রস্তাবিত ভোল্টেজ ব্যবহার করতে ভুলবেন না।

ধাপ 3: আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)

আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)
আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)
আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)
আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)
আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)
আইআর সেন্সর এবং এলসিডি মাউন্ট করা (alচ্ছিক)

আমি আলোর প্রভাব পরিবর্তন করতে এবং ব্যবহার করার জন্য একটি IR সেন্সর এবং রিমোট ব্যবহার করতে বেছে নিয়েছি এবং ব্যবহারকারীদের প্রভাবগুলির জন্য তাদের কাছে বিকল্পগুলি দেখানোর জন্য একটি LCD ব্যবহার করেছি।

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

এলসিডি এবং আইআর রিসিভার সংযোগ করার জন্য আমি পুরুষ থেকে মহিলা সংযোগকারী ব্যবহার করেছি যা ডেটা এবং স্থল এবং শক্তির জন্য আরডুইনোতে প্লাগ করে। সবকিছুকে ওয়্যার আপ করার জন্য আমি IR সেন্সরের জন্য ডাটা পিনে 2 kΩ রোধের সাথে পিন 12 ব্যবহার করেছি, LCD এর SDA এর জন্য এনালগ পিন A4 এবং LCD এর SCL এর জন্য এনালগ পিন 5।

ধাপ 4: কোড

এই প্রকল্পের জন্য, আমি কয়েকটি লাইব্রেরি ব্যবহার করি যা আপনাকে ব্যবহার করতে হবে। আমি তাদের এখানে রাখতে যাচ্ছি, মনে রাখবেন যে আমি উইন্ডোতে আছি যাতে আপনি ম্যাক বা লিনাক্সে থাকলে এটি প্রভাব ফেলতে পারে।

আপনার কাছে থাকা LEDs এর সংখ্যার উপর নির্ভর করে আপনাকে পিক্সেলের সংখ্যা পরিবর্তন করতে হবে। আমি একটি সিরিয়াল মনিটর ইন্টারফেসে তৈরি করেছি যাতে আপনি যদি আইআর সেন্সর ব্যবহার না করেন তবে আপনি এর সাথে সেইভাবে ইন্টারফেস করতে পারেন।

// লাইব্রেরি

#অন্তর্ভুক্ত Adafruit_NeoPixel.h> #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #পিন এবং ধ্রুবক মান // পিন এবং ধ্রুবক মান কনস্ট int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); decode_results ফলাফল; স্বাক্ষরবিহীন দীর্ঘ কী_ মান = 0; const int NUMPIXELS = 27;

Adafruit_NeoPixel পিক্সেল = Adafruit_NeoPixel (NUMPIXELS, 3);

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // ভেরিয়েবল int IRNumb; int IRNumb2; int রংধনু = 0; uint32_t রামধনু রঙ = পিক্সেল। রঙ (0, 0, 0); চার ইনপুট = 0; চার ইনপুট 2 = 0; int r; int g; int খ; int breakCondition = 0; অকার্যকর সেটআপ () {// এমন উপাদানগুলি চালু করে যা পুনরাবৃত্তি করার প্রয়োজন নেই। lcd.begin (16, 2); // lcd ডিসপ্লে lcd.backlight (); এর 16 টি কলাম এবং 2 সারি সংজ্ঞায়িত করা // // ব্যাকলাইট চালু করার জন্য Serial.begin (9600); পিক্সেল শুরু (); irrecv.enableIRIn (); Serial.println ("লাইট বন্ধ করতে 0 লিখুন"); // বিগিনিং ইন্সট্রাকশনস Serial.println ("LEDs সাদা করতে 1 লিখুন"); Serial.println ("বিভিন্ন রঙের মাধ্যমে LEDs চক্রের জন্য একটি 2 লিখুন"); Serial.println ("LED রং ম্যানুয়ালি কাস্টমাইজ করার জন্য একটি 3 লিখুন"); } অকার্যকর লুপ () {IRNumb = 10; IRScan (); mainOptions (); if (Serial.available ()> 0) {// একটি অক্ষর পাওয়া যায় কিনা পরীক্ষা করে? ইনপুট = (চর) Serial.read (); } // বিভিন্ন বিকল্প বেছে নেয় যদি (ইনপুট == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // সাদা সেটআল (রামধনু রঙ); // LEDs আপডেট করে} অন্যথায় (ইনপুট == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // অফ সেটআল (রামধনু রঙ); // LEDs আপডেট করে} অন্যথায় (ইনপুট == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;

Serial.println ("এই প্রভাব থেকে বেরিয়ে আসার জন্য 2 নয় এমন কিছু লিখুন, তারপরে নতুন প্রভাবের জন্য পূর্ববর্তী বিকল্পগুলির যেকোনো একটি।");

lcd.clear (); // পর্দা পরিষ্কার করুন lcd.setCursor (0, 0); lcd.print ("যে কোন ব্যবহার করে প্রস্থান করুন"); lcd.setCursor (0, 1); lcd.print ("অসাড় যে! = 2"); জন্য (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || আইআরনাম্ব setAll (রামধনু রঙ); breakCondition = 1; বিরতি; } রামধনু রঙ = রঙ পরিবর্তন (i, 0, 0); setAll (রামধনু রঙ); শো স্ট্রিপ (); বিলম্ব (100); } এর জন্য (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || আইআরনাম্ব setAll (রামধনু রঙ); breakCondition = 1; বিরতি; } g ++; রেইনবো কালার = কালার চেঞ্জ (i, g, 0); setAll (রামধনু রঙ); শো স্ট্রিপ (); বিলম্ব (100); } এর জন্য (int g = 0; g = 48 && input <= 57) || breakCondition == 1 || আইআরনাম্ব setAll (রামধনু রঙ); breakCondition = 1; বিরতি; } আর+= 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, 0); setAll (রামধনু রঙ); শো স্ট্রিপ (); বিলম্ব (100); } এর জন্য (int b = 0; b = 48 && input <= 57) || breakCondition == 1 || আইআরনাম্ব setAll (রামধনু রঙ); breakCondition = 1; বিরতি; } আর+= 2; g+= 5; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); বিলম্ব (100); } mainOptions (); } অন্যথায় যদি (ইনপুট == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;

Serial.println ("প্রস্থান করার জন্য n প্রবেশ করুন");

Serial.println ("লাল রঙ বাড়াতে বা হ্রাস করতে w এবং s ব্যবহার করুন"); Serial.println ("সবুজ রঙ বাড়াতে বা কমানোর জন্য r এবং f ব্যবহার করুন"); Serial.println ("নীল রঙ বাড়াতে বা কমানোর জন্য y এবং h ব্যবহার করুন"); lcd.clear (); // পর্দা পরিষ্কার করুন lcd.setCursor (0, 0); lcd.print ("প্রস্থান: 0, 4/7: +/- লাল"); lcd.setCursor (0, 1); lcd.print ("5/8: সবুজ, 6/9: নীল");

while (input2! = 'n' || IRNumb2! = 0) {

যদি (Serial.available ()> 0) {// একটি অক্ষর পাওয়া যায়? input2 = (char) Serial.read (); } // সিরিয়াল.প্রিন্টলিন (IRNumb2); IRNumb2 = 10; IRScan2 ();

যদি (IRNumb2 == 0) {

বিরতি; } if (input2 == 'w' || IRNumb2 == 4) {r+= 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); } অন্যথায় যদি (input2 == 's' || IRNumb2 == 7) {r- = 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); } অন্যথায় যদি (input2 == 'r' || IRNumb2 == 5) {g+= 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); } অন্যথায় যদি (input2 == 'f' || IRNumb2 == 8) {g- = 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); }

অন্যথায় যদি (input2 == 'y' || IRNumb2 == 6) {

b+= 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); }

অন্যথায় যদি (input2 == 'h' || IRNumb2 == 9) {

b- = 2; রংধনু রঙ = রঙ পরিবর্তন (r, g, b); setAll (রামধনু রঙ); শো স্ট্রিপ (); }} mainOptions (); } setAll (রামধনু রঙ); শো স্ট্রিপ (); } অকার্যকর ShowStrip () {pixels.show (); } void setAll (uint32_t color) {for (int i = 0; i <NUMPIXELS; i ++) {pixels.setPixelColor (i, color); }} // একটি রঙ মান পেতে 0 থেকে 255 একটি মান ইনপুট করুন। uint32_t colourChange (int r, int g, int b) {return pixels. Color (r, g, b); } void mainOptions () {// প্রধান প্রভাব অপশন lcd.clear (); // স্ক্রিন lcd.setCursor পরিষ্কার করুন (0, 0); lcd.print ("লাইট অফের জন্য 0"); lcd.setCursor (0, 1); lcd.print ("1: হোয়াইট লাইট"); বিলম্ব (1000); lcd.clear (); // পর্দা পরিষ্কার করুন lcd.setCursor (0, 0); lcd.print ("2: রঙের প্রভাব"); lcd.setCursor (0, 1); lcd.print ("3: ম্যানুয়াল"); বিলম্ব (1000); } বাতিল IRScan () {যদি (irrecv.decode (& ফলাফল)) {

যদি (results.value == 0XFFFFFFFF)

results.value = key_value; অন্য {//Serial.println(results.value, HEX); যদি (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } অন্যথায় যদি (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } অন্যথায় যদি (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } অন্যথায় যদি (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } অন্যথায় যদি (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } অন্যথায় যদি (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } অন্যথায় যদি (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } অন্যথায় যদি (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } অন্যথায় যদি (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } অন্যথায় যদি (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} key_value = results.value; irrecv.resume (); }} বাতিল IRScan2 () {যদি (irrecv.decode (& ফলাফল)) {

যদি (results.value == 0XFFFFFFFF)

results.value = key_value; অন্য {// Serial.println (results.value, HEX); যদি (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } অন্যথায় যদি (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } অন্যথায় যদি (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } অন্যথায় যদি (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } অন্যথায় যদি (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } অন্যথায় যদি (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } অন্যথায় যদি (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } অন্যথায় যদি (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } অন্যথায় যদি (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } অন্যথায় যদি (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} key_value = results.value; irrecv.resume (); }}

ধাপ 5: মাউন্ট করা

মাউন্ট করা
মাউন্ট করা

আরডুইনোকে ফ্রেমে মাউন্ট করার জন্য আমি শুধু এটিকে এবং ফ্রেমটির পিছনে যে ব্রেডবোর্ডটি ব্যবহার করতাম এবং তারগুলি ভাল দেখানোর জন্য তারগুলি coverেকে/লুকানোর চেষ্টা করতাম।

প্রস্তাবিত: