সুচিপত্র:
ভিডিও: Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি: 3 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:57
আমি অনন্ত আয়না জুড়ে এসেছি এবং আমি এটিকে সত্যিই দুর্দান্ত বলে মনে করেছি। এটি আমাকে একটি অনন্ত আয়না তৈরি করতে অনুপ্রাণিত করেছিল, কিন্তু একটি উদ্দেশ্য থাকার জন্য আমার এটির প্রয়োজন ছিল। সুতরাং, আমি একটি কার্যকরী অনন্ত আয়না ঘড়ি তৈরি করার সিদ্ধান্ত নিয়েছি। এটি একটি অনন্ত আয়না যা আপনাকে পোটেন্টিওমিটার ব্যবহার করে মোড, গতি এবং রঙ পরিবর্তন করতে দেয়। (দ্রষ্টব্য: এই প্রথম আমি এইরকম কিছু তৈরি করছি)
সরবরাহ
এই জিনিসটি তৈরি করার জন্য আপনার যা দরকার তা নিয়ে ডুব দেওয়া যাক!
আপনার প্রয়োজন হবে…
1) 1 Arduino Uno
3) 1 ব্রেডবোর্ড
4) 1 স্লাইড সুইচ
5) 3 Potentiometers
6) 1 9 ভি ব্যাটারি
7) 5 মিটার WS2811 LED স্ট্রিপ
8) জাম্পার কেবল তারের
9) একটি ঘড়ি (যে ঘড়ি আমি 12 ইঞ্চি বড় আধুনিক ঘড়ি ব্যবহার করেছি)
10) নমনীয় মিরর শীট (যেটা আমি মিরর শীট ব্যবহার করেছি)
11) গোপনীয়তা চলচ্চিত্র (আমি ওয়ান ওয়ে মিরর ব্যবহার করেছি)
12) সোল্ডারিংয়ের প্রয়োজন হতে পারে এটি আপনার কোন উপকরণগুলির উপর নির্ভর করে
ধাপ 1: তারের
ওয়্যারিং বেশ সহজ
- SPST সুইচ LED এর (A0) চালু এবং বন্ধ করে
- বাম potentiometer আলো নিয়ন্ত্রণ করে (A1)
- মাঝারি পটেনশিয়োমিটার মোডগুলি নিয়ন্ত্রণ করে (A2)
- ডান পটেন্টিওমিটার গতি নিয়ন্ত্রণ করে (A3)
ধাপ 2: কোড
#অন্তর্ভুক্ত
#পিন 6 নির্ধারণ করুন
#নির্ধারণ করুন NUM_LEDS 54
#A0 A0 নির্ধারণ করুন
#A1 A1 সংজ্ঞায়িত করুন
#A2 A2 সংজ্ঞায়িত করুন
#A3 A3 সংজ্ঞায়িত করুন
// প্যারামিটার 1 = স্ট্রিপে পিক্সেলের সংখ্যা
// প্যারামিটার 2 = পিন নম্বর (অধিকাংশই বৈধ)
// প্যারামিটার 3 = পিক্সেল টাইপ পতাকা, প্রয়োজন অনুযায়ী একসাথে যোগ করুন:
// NEO_KHZ800 800 KHz বিটস্ট্রিম (বেশিরভাগ NeoPixel পণ্য w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (ক্লাসিক 'v1' (v2 নয়) ফ্লোরা পিক্সেল, WS2811 ড্রাইভার)
// NEO_GRB পিক্সেলগুলি GRB বিটস্ট্রিম (বেশিরভাগ NeoPixel পণ্য) এর জন্য তারযুক্ত
// NEO_RGB পিক্সেলগুলি RGB বিটস্ট্রিমের জন্য তারযুক্ত (v1 ফ্লোরা পিক্সেল, v2 নয়)
Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
অকার্যকর সেটআপ() {
strip.begin ();
strip.show (); // সব পিক্সেল 'বন্ধ' করতে শুরু করুন
}
অকার্যকর লুপ () {
যদি (analogRead (A0)> = 512) {
যদি (analogRead (A2)> = 768) {
যদি (analogRead (A3)> = 768) {
রেইনবো সাইকেল (80, এনালগ রিড (A0), এনালগ রিড (A1), এনালগ রিড (A2), এনালগ রিড (A3));
} অন্যথায় যদি (analogRead (A3)> = 512) {
রেইনবো সাইকেল (60, এনালগ রিড (A0), এনালগ রিড (A1), এনালগ রিড (A2), এনালগ রিড (A3));
} অন্যথায় যদি (analogRead (A3)> = 256) {
RainbowCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
অন্য {
রেনবো সাইকেল (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} অন্যথায় যদি (analogRead (A2)> = 512) {
যদি (analogRead (A1)> = 768) {
CylonBounce (এলোমেলো (255), এলোমেলো (255), এলোমেলো (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 512) {
CylonBounce (এলোমেলো (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 256) {
CylonBounce (0, random (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
অন্য {
CylonBounce (0, 0, random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} অন্যথায় যদি (analogRead (A2)> = 256) {
যদি (analogRead (A1)> = 768) {
বাইট আর, জি, বি;
r = এলোমেলো (255);
g = এলোমেলো (255);
b = এলোমেলো (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 512) {
বাইট আর, জি, বি;
r = এলোমেলো (255);
g = 0;
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 256) {
বাইট আর, জি, বি;
r = 0;
g = এলোমেলো (255);
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
অন্য {
বাইট আর, জি, বি;
r = 0;
g = 0;
b = এলোমেলো (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
অন্য {যদি (analogRead (A1)> = 768) {
RunningLights (এলোমেলো (255), এলোমেলো (255), এলোমেলো (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 512) {
RunningLights (এলোমেলো (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} অন্যথায় যদি (analogRead (A1)> = 256) {
RunningLights (1, এলোমেলো (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
অন্য {
RunningLights (1, 1, random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
} অন্য {
setAll (0, 0, 0);
}
}
অকার্যকর রেইনবো সাইকেল (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {
বাইট *সি;
uint16_t i, j;
জন্য (j = 0; j <256*5; j ++) {// 5 চক্রের সব রঙের চক্র
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
জন্য (i = 0; i <NUM_LEDS; i ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
c = চাকা (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c+1), *(c+2));
}
শো স্ট্রিপ ();
বিলম্ব (SpeedDelay);
}
}
বাইট * চাকা (বাইট হুইলপস) {
স্ট্যাটিক বাইট c [3];
যদি (হুইলপস <85) {
c [0] = হুইলপস * 3;
c [1] = 255 - হুইলপস * 3;
c [2] = 0;
} অন্যথায় যদি (হুইলপস <170) {
হুইলপস -= 85;
c [0] = 255 - হুইলপস * 3;
c [1] = 0;
c [2] = হুইলপস * 3;
} অন্য {
হুইলপস -= 170;
c [0] = 0;
c [1] = হুইলপস * 3;
c [2] = 255 - হুইলপস * 3;
}
প্রত্যাবর্তন গ;
}
অকার্যকর CylonBounce (বাইট লাল, বাইট সবুজ, বাইট নীল, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {
int SpeedDelay;
int ReturnDelay;
যদি (analogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}
অন্যথায় যদি (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}
অন্যথায় যদি (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}
অন্যথায় {SpeedDelay = 20; ReturnDelay = 60;}
জন্য (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
setAll (0, 0, 0);
সেট পিক্সেল (i, লাল/10, সবুজ/10, নীল/10);
জন্য (int j = 1; j <= EyeSize; j ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
setPixel (i+j, লাল, সবুজ, নীল);
}
setPixel (i+EyeSize+1, লাল/10, সবুজ/10, নীল/10);
শো স্ট্রিপ ();
বিলম্ব (SpeedDelay);
}
বিলম্ব (ReturnDelay);
জন্য (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {
setAll (0, 0, 0);
সেটপিক্সেল (i, লাল/10, সবুজ/10, নীল/10);
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
জন্য (int j = 1; j <= EyeSize; j ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
setPixel (i+j, লাল, সবুজ, নীল);
}
setPixel (i+EyeSize+1, লাল/10, সবুজ/10, নীল/10);
শো স্ট্রিপ ();
বিলম্ব (SpeedDelay);
}
বিলম্ব (ReturnDelay);
}
অকার্যকর RunningLights (বাইট লাল, বাইট সবুজ, বাইট নীল, int oldA0, int oldA1, int oldA2, int oldA3) {
int অবস্থান = 0;
int WaveDelay;
যদি (analogRead (A3)> = 768) {WaveDelay = 80;}
অন্যথায় যদি (analogRead (A3)> = 512) {WaveDelay = 60;}
অন্যথায় যদি (analogRead (A3)> = 256) {WaveDelay = 40;}
অন্যথায় {WaveDelay = 20;}
জন্য (int j = 0; j
{
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
অবস্থান ++; // = 0; // অবস্থান + হার;
জন্য (int i = 0; i
// সাইন ওয়েভ, 3 অফসেট ওয়েভ একটি রামধনু তৈরি করে!
// ভাসা স্তর = পাপ (i + অবস্থান) * 127 + 128;
// setPixel (i, level, 0, 0);
// ভাসা স্তর = পাপ (i + অবস্থান) * 127 + 128;
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
setPixel (i, ((sin (i + Position) * 127 + 128)/255) * লাল, ((পাপ (i + অবস্থান) * 127 + 128)/255) * সবুজ, ((পাপ (i + অবস্থান) * 127 + 128)/255) * নীল);
}
শো স্ট্রিপ ();
বিলম্ব (WaveDelay);
}
}
void meteorRain (বাইট লাল, বাইট সবুজ, বাইট নীল, বাইট উল্কা সাইজ, বাইট উল্কা TrailDecay, বুলিয়ান উল্কা RandomDecay, int oldA0, int oldA1, int oldA2, int oldA3) {
setAll (0, 0, 0);
int SpeedDelay;
যদি (analogRead (A3)> = 768) {SpeedDelay = 80;}
অন্যথায় যদি (analogRead (A3)> = 512) {SpeedDelay = 60;}
অন্যথায় যদি (analogRead (A3)> = 256) {SpeedDelay = 40;}
অন্যথায় {SpeedDelay = 20;}
জন্য (int i = 0; i <NUM_LEDS+NUM_LEDS; i ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
// বিবর্ণ উজ্জ্বলতা সব LEDs এক ধাপ
জন্য (int j = 0; j
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
যদি ((! meteorRandomDecay) || (এলোমেলো (10)> 5)) {
fadeToBlack (j, meteorTrailDecay);
}
}
// উল্কা আঁকা
জন্য (int j = 0; j <meteorSize; j ++) {
যদি (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || | ((oldA3+256)
বিরতি;
}
যদি ((i-j = 0)) {
setPixel (i-j, লাল, সবুজ, নীল);
}
}
শো স্ট্রিপ ();
বিলম্ব (SpeedDelay);
}
}
void fadeToBlack (int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// নিওপিক্সেল
uint32_t oldColor;
uint8_t r, g, b;
int মান;
oldColor = strip.getPixelColor (ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (oldColor & 0x000000ffUL);
r = (r <= 10)? 0: (int) r- (r*fadeValue/256);
g = (g <= 10)? 0: (int) g- (g*fadeValue/256);
b = (b <= 10)? 0: (int) b- (b*fadeValue/256);
strip.setPixelColor (ledNo, r, g, b);
#যদি শেষ
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [ledNo].fadeToBlackBy (fadeValue);
#যদি শেষ
}
// *** এখানে প্রতিস্থাপন ***
অকার্যকর শো স্ট্রিপ () {
#ifdef ADAFRUIT_NEOPIXEL_H
// নিওপিক্সেল
strip.show ();
#যদি শেষ
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show ();
#যদি শেষ
}
অকার্যকর পিক্সেল (int Pixel, বাইট লাল, বাইট সবুজ, বাইট নীল) {
#ifdef ADAFRUIT_NEOPIXEL_H
// নিওপিক্সেল
strip.setPixelColor (Pixel, strip. Color (লাল, সবুজ, নীল));
#যদি শেষ
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [Pixel].r = লাল;
leds [Pixel].g = সবুজ;
leds [Pixel].b = নীল;
#যদি শেষ
}
অকার্যকর সেট সব (বাইট লাল, বাইট সবুজ, বাইট নীল) {
জন্য (int i = 0; i <NUM_LEDS; i ++) {
setPixel (i, লাল, সবুজ, নীল);
}
শো স্ট্রিপ ();
}
ধাপ 3: ঘড়ি তৈরি করা
আমি একটি গ্লাস ঘড়ি পেতে সুপারিশ করব যা ভিতরে সমতল। যখন আমি ঘড়ির ভিতরে নমনীয় আয়না প্রয়োগ করছিলাম তখন ঘড়ির ভিতরের সংখ্যাগুলির কারণে একটি সমস্যা হয়েছিল, আয়নাটি বাঁকছিল যার ফলে অনন্ত আয়নার প্রভাব ঘটছিল না। যথাসম্ভব সমতল হওয়ার জন্য আপনার নমনীয় মিরর শীট এবং গোপনীয়তা ফিল্ম থাকা দরকার। যদি আপনি একটি ঘড়ি পেয়ে থাকেন তবে নিশ্চিত করুন যে আপনি কোনও সমস্যা ছাড়াই এলইডি ভিতরে রাখতে পারেন।
ধাপ 1: ঘড়িটি খুলুন এবং সামনের কাচটি সরান
ধাপ 2: সামনের কাচের গোপনীয়তা চলচ্চিত্রটি রাখুন (এই ভিডিওটি আপনাকে এটি কীভাবে করতে হয় তা দেখায়)
ধাপ 3: ঘড়ির অভ্যন্তরে নমনীয় আয়নাটি প্রয়োগ করুন (এটি করার আগে ঘড়ির হাত সরান)
ধাপ 4: ঘড়ির হাত পিছনে রাখার জন্য মাঝখানে একটি গর্ত তৈরি করুন
ধাপ 5: ঘড়ির ভিতরের দেয়ালের চারপাশে LED স্ট্রিপ রাখুন (আমি এই ধাপের জন্য একটি গরম আঠালো বন্দুক ব্যবহার করেছি)
ধাপ 6: LED স্ট্রিপটি চালু করুন এবং ঘড়ির উপরে গ্লাসটি রাখুন যাতে ইনফিনিটি মিরর ইফেক্ট আছে কিনা
ধাপ 7: সবকিছু শেষ হয়ে গেলে ঘড়িটি একসাথে রাখুন এবং তারগুলি পিছনে যেতে দিন
ধাপ 8: অভিনন্দন আপনি প্রকল্পটি সম্পন্ন করেছেন এবং সবকিছু ঠিকঠাক কাজ করা উচিত
যদি আপনার কোন প্রশ্ন থাকে তাহলে অনুগ্রহ করে তাদের নিচে মন্তব্য করুন (জেনে রাখুন আমি হয়তো উত্তর দিতে পারব না, কিন্তু আমি আমার সর্বোচ্চ চেষ্টা করবো)
প্রস্তাবিত:
একটি ইনফিনিটি মিরর ঘড়ি তৈরি করুন: 15 টি ধাপ (ছবি সহ)
একটি ইনফিনিটি মিরর ঘড়ি তৈরি করুন: একটি পূর্ববর্তী প্রকল্পে আমি একটি অনন্ত আয়না তৈরি করেছি, যেখানে এটির জন্য আমার চূড়ান্ত লক্ষ্য ছিল এটি একটি ঘড়িতে পরিণত করা। (একটি রঙিন ইনফিনিটি মিরর তৈরি করুন) এটি নির্মাণের পর আমি তা অনুসরণ করিনি কারণ, যদিও এটি শীতল দেখায়, সেখানে কিছু জিনিস ছিল
একটি সহজ ইনফিনিটি মিরর কিউব তৈরি করুন কোন 3D মুদ্রণ এবং কোন প্রোগ্রামিং না: 15 টি ধাপ (ছবি সহ)
একটি সহজ ইনফিনিটি মিরর কিউব তৈরি করুন NO 3D প্রিন্টিং এবং NO প্রোগ্রামিং: প্রত্যেকেই একটি ভাল ইনফিনিটি কিউব পছন্দ করে, কিন্তু তাদের দেখে মনে হয় যে এগুলি তৈরি করা কঠিন হবে। এই নির্দেশাবলীর জন্য আমার লক্ষ্য হল কিভাবে ধাপে ধাপে একটি তৈরি করতে হয় তা দেখানো। শুধু তাই নয়, আমি আপনাকে যে নির্দেশনা দিচ্ছি তার সাহায্যে আপনি একটি করতে পারবেন
Arduino Gemma এবং NeoPixels এর সাথে সহজ ইনফিনিটি মিরর: 8 টি ধাপ (ছবি সহ)
Arduino Gemma এবং NeoPixels এর সাথে সহজ ইনফিনিটি মিরর: দেখুন! মোহনীয় এবং প্রতারণামূলকভাবে সহজ অনন্ত আয়নার গভীরে দেখুন! সীমাহীন প্রতিবিম্বের প্রভাব তৈরি করতে একটি আয়না স্যান্ডউইচের উপর এলইডিগুলির একটি একক ফালা ভিতরের দিকে জ্বলজ্বল করে। এই প্রকল্পটি আমার ভূমিকা Arduin থেকে দক্ষতা এবং কৌশল প্রয়োগ করবে
সহজ DIY ইনফিনিটি মিরর ঘড়ি: 3 ধাপ
সহজ DIY ইনফিনিটি মিরর ঘড়ি: আপনি যদি আপনার স্বাভাবিক ঘড়িতে বিরক্ত হন তবে এই দুর্দান্ত DIY ইনফিনিটি মিরর ঘড়িটি তৈরি করার চেষ্টা করুন। আপনার রুম সমতল করার জন্য
ইনফিনিটি মিরর ঘড়ি: 5 টি ধাপ (ছবি সহ)
ইনফিনিটি মিরর ঘড়ি: এটি একটি হস্তনির্মিত ঘড়ি প্রধানত প্রসাধন জন্য। বন্ধ করা হলে, এটি একটি ছোট আয়না। অবশ্যই, এটি নিজেই একটি ঘড়ি