সুচিপত্র:

Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি: 3 ধাপ
Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি: 3 ধাপ

ভিডিও: Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি: 3 ধাপ

ভিডিও: Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি: 3 ধাপ
ভিডিও: Potentiometer Basics - How they Work | Basic Electronics 2024, জুলাই
Anonim
Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি
Potentiometers সঙ্গে ইনফিনিটি মিরর ঘড়ি

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

সরবরাহ

এই জিনিসটি তৈরি করার জন্য আপনার যা দরকার তা নিয়ে ডুব দেওয়া যাক!

আপনার প্রয়োজন হবে…

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: অভিনন্দন আপনি প্রকল্পটি সম্পন্ন করেছেন এবং সবকিছু ঠিকঠাক কাজ করা উচিত

যদি আপনার কোন প্রশ্ন থাকে তাহলে অনুগ্রহ করে তাদের নিচে মন্তব্য করুন (জেনে রাখুন আমি হয়তো উত্তর দিতে পারব না, কিন্তু আমি আমার সর্বোচ্চ চেষ্টা করবো)

প্রস্তাবিত: