فهرست مطالب:
تصویری: ساعت آینه بی نهایت با پتانسیومتر: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
با آینه بی نهایت روبرو شدم و دیدم که واقعاً جالب است. این امر به من انگیزه داد تا آینه ای بی نهایت بسازم ، اما برای داشتن هدف به آن نیاز داشتم. بنابراین ، من تصمیم گرفتم یک ساعت آینه بی نهایت کارآمد بسازم. این یک آینه بی نهایت است که به شما امکان می دهد حالت ها ، سرعت و رنگ ها را با استفاده از پتانسیومتر تغییر دهید. (توجه: این اولین بار است که چنین چیزی را می سازم)
تدارکات
بیایید به آنچه شما برای ساختن این چیز نیاز دارید بپردازیم!
شما نیاز خواهید داشت…
1) 1 آردوینو اونو
3) 1 تخته نان
4) 1 سوئیچ اسلاید
5) 3 پتانسیومتر
6) 1 باتری 9 ولت
7) 5 متر نوار LED WS2811
8) سیم کشی بلوز
9) یک ساعت (ساعتی که من از ساعت بزرگ 12 اینچی مدرن استفاده کردم)
10) ورق آینه انعطاف پذیر (همان چیزی که من از ورق آینه استفاده کردم)
11) فیلم حریم خصوصی (فیلمی که من از آینه یک طرفه استفاده کردم)
12) لحیم کاری ممکن است لازم باشد ، این بستگی به مواد شما دارد
مرحله 1: سیم کشی
سیم کشی کاملاً ساده است
- سوئیچ SPST LED ها را روشن و خاموش می کند (A0)
- پتانسیومتر سمت چپ نور را کنترل می کند (A1)
- پتانسیومتر میانی حالت ها را کنترل می کند (A2)
- پتانسیومتر مناسب سرعت را کنترل می کند (A3)
مرحله 2: کد
#عبارتند از
#پین 6 را تعریف کنید
#تعریف NUM_LEDS 54
#A0 A0 را تعریف کنید
#A1 A1 را تعریف کنید
#A2 A2 را تعریف کنید
#A3 A3 را تعریف کنید
// پارامتر 1 = تعداد پیکسل در نوار
// پارامتر 2 = شماره پین (اکثر آنها معتبر هستند)
// پارامتر 3 = پرچم های نوع پیکسل ، در صورت نیاز به هم اضافه کنید:
// NEO_KHZ800 800 KHz bitstream (اکثر محصولات NeoPixel با LED های WS2812)
// NEO_KHZ400 400 کیلوهرتز (کلاسیک 'v1' (نه v2) پیکسل FLORA ، درایور WS2811)
// پیکسل های NEO_GRB برای جریان بیت GRB سیم کشی می شوند (بیشتر محصولات NeoPixel)
// پیکسل های NEO_RGB برای جریان بیت RGB (پیکسل های v1 FLORA ، نه v2)
نوار Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS ، PIN ، NEO_GRB + NEO_KHZ800) ؛
void setup () {
strip.begin ()؛
strip.show ()؛ // مقداردهی اولیه همه پیکسل ها به حالت "خاموش"
}
حلقه خالی () {
if (analogRead (A0)> = 512) {
if (analogRead (A2)> = 768) {
if (analogRead (A3)> = 768) {
rainbowCycle (80 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A3)> = 512) {
rainbowCycle (60 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A3)> = 256) {
rainbowCycle (40 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
دیگری {
rainbowCycle (20 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
} else if (analogRead (A2)> = 512) {
if (analogRead (A1)> = 768) {
CylonBounce (تصادفی (255) ، تصادفی (255) ، تصادفی (255) ، 4 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 512) {
CylonBounce (تصادفی (255) ، 0 ، 0 ، 4 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 256) {
CylonBounce (0 ، تصادفی (255) ، 0 ، 4 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
دیگری {
CylonBounce (0 ، 0 ، تصادفی (255) ، 4 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
} else if (analogRead (A2)> = 256) {
if (analogRead (A1)> = 768) {
بایت r ، g ، b ؛
r = تصادفی (255) ؛
g = تصادفی (255) ؛
b = تصادفی (255) ؛
meteorRain (r، g، b، 10، 20، true، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 512) {
بایت r ، g ، b ؛
r = تصادفی (255) ؛
g = 0 ؛
b = 0 ؛
meteorRain (r، g، b، 10، 20، true، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 256) {
بایت r ، g ، b ؛
r = 0 ؛
g = تصادفی (255) ؛
b = 0 ؛
meteorRain (r، g، b، 10، 20، true، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
دیگری {
بایت r ، g ، b ؛
r = 0 ؛
g = 0 ؛
b = تصادفی (255) ؛
meteorRain (r، g، b، 10، 20، true، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
}
else {if (analogRead (A1)> = 768) {
RunningLights (تصادفی (255) ، تصادفی (255) ، تصادفی (255) ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 512) {
RunningLights (تصادفی (255) ، 1 ، 1 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
} else if (analogRead (A1)> = 256) {
RunningLights (1 ، تصادفی (255) ، 1 ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
دیگری {
RunningLights (1 ، 1 ، تصادفی (255) ، analogRead (A0) ، analogRead (A1) ، analogRead (A2) ، analogRead (A3)) ؛
}
}
} دیگری {
setAll (0 ، 0 ، 0) ؛
}
}
void rainbowCycle (int SpeedDelay، int oldA0، int oldA1، int oldA2، int oldA3) {
بایت *c؛
uint16_t i، j؛
برای (j = 0 ؛ j <256*5 ؛ j ++) {// 5 چرخه از همه رنگها روی چرخ
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
برای (i = 0 ؛ i <NUM_LEDS ؛ i ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
c = چرخ (((i * 256 / NUM_LEDS) + j) و 255) ؛
setPixel (i ، *c ، *(c+1) ، *(c+2)) ؛
}
showStrip ()؛
تاخیر (SpeedDelay) ؛
}
}
byte * Wheel (byte WheelPos) {
بایت استاتیک c [3]؛
if (WheelPos <85) {
c [0] = WheelPos * 3 ؛
c [1] = 255 - WheelPos * 3 ؛
c [2] = 0 ؛
} else if (WheelPos <170) {
WheelPos -= 85 ؛
c [0] = 255 - WheelPos * 3 ؛
c [1] = 0 ؛
c [2] = WheelPos * 3 ؛
} دیگری {
WheelPos -= 170 ؛
c [0] = 0 ؛
c [1] = WheelPos * 3 ؛
c [2] = 255 - WheelPos * 3 ؛
}
بازگشت ج؛
}
void CylonBounce (بایت قرمز ، سبز بایت ، آبی بایت ، int EyeSize ، int oldA0 ، int oldA1 ، int oldA2 ، int oldA3) {
int SpeedDelay؛
int ReturnDelay؛
if (analogRead (A3)> = 768) {SpeedDelay = 80 ؛ ReturnDelay = 120؛}
else if (analogRead (A3)> = 512) {SpeedDelay = 60 ؛ ReturnDelay = 100؛}
else if (analogRead (A3)> = 256) {SpeedDelay = 40 ؛ ReturnDelay = 80؛}
else {SpeedDelay = 20؛ ReturnDelay = 60؛}
برای (int i = 0؛ i <NUM_LEDS-EyeSize-2؛ i ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
setAll (0 ، 0 ، 0) ؛
setPixel (i ، قرمز/10 ، سبز/10 ، آبی/10) ؛
برای (int j = 1 ؛ j <= EyeSize ؛ j ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
setPixel (i+j ، قرمز ، سبز ، آبی) ؛
}
setPixel (i+EyeSize+1 ، قرمز/10 ، سبز/10 ، آبی/10) ؛
showStrip ()؛
تاخیر (SpeedDelay) ؛
}
تأخیر (ReturnDelay) ؛
برای (int i = NUM_LEDS-EyeSize-2؛ i> 0؛ i--) {
setAll (0 ، 0 ، 0) ؛
setPixel (i ، قرمز/10 ، سبز/10 ، آبی/10) ؛
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
برای (int j = 1 ؛ j <= EyeSize ؛ j ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
setPixel (i+j ، قرمز ، سبز ، آبی) ؛
}
setPixel (i+EyeSize+1 ، قرمز/10 ، سبز/10 ، آبی/10) ؛
showStrip ()؛
تاخیر (SpeedDelay) ؛
}
تأخیر (ReturnDelay) ؛
}
void RunningLights (بایت قرمز ، سبز بایت ، آبی بایت ، int oldA0 ، int oldA1 ، int oldA2 ، int oldA3) {
int موقعیت = 0 ؛
int WaveDelay؛
if (analogRead (A3)> = 768) {WaveDelay = 80؛}
else if (analogRead (A3)> = 512) {WaveDelay = 60؛}
else if (analogRead (A3)> = 256) {WaveDelay = 40؛}
else {WaveDelay = 20؛}
برای (int j = 0 ؛ j
{
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
موقعیت ++ ؛ // = 0 ؛ // موقعیت + نرخ ؛
برای (int i = 0 ؛ i
// موج سینوسی ، 3 موج افست رنگین کمان می سازد!
// سطح شناور = گناه (i + موقعیت) * 127 + 128؛
// setPixel (i ، سطح ، 0 ، 0) ؛
// سطح شناور = گناه (i + موقعیت) * 127 + 128؛
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
setPixel (i ، ((sin (i + Position) * 127 + 128)/255) * قرمز ،
((گناه (i + موقعیت) * 127 + 128)/255) * سبز ،
((گناه (i + موقعیت) * 127 + 128)/255) * آبی) ؛
}
showStrip ()؛
تاخیر (WaveDelay) ؛
}
}
شهاب سنگین
setAll (0 ، 0 ، 0) ؛
int SpeedDelay؛
if (analogRead (A3)> = 768) {SpeedDelay = 80؛}
else if (analogRead (A3)> = 512) {SpeedDelay = 60؛}
else if (analogRead (A3)> = 256) {SpeedDelay = 40؛}
else {SpeedDelay = 20؛}
برای (int i = 0 ؛ i <NUM_LEDS+NUM_LEDS ؛ i ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
// محو روشنایی همه LED ها در یک مرحله
برای (int j = 0 ؛ j
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
if ((! meteorRandomDecay) || (تصادفی (10)> 5)) {
fadeToBlack (j ، meteorTrailDecay) ؛
}
}
// رسم شهاب سنگ
برای (int j = 0؛ j <meteorSize؛ j ++) {
if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((قدیمی A3+256)
زنگ تفريح؛
}
if ((i-j = 0)) {
setPixel (i-j ، قرمز ، سبز ، آبی) ؛
}
}
showStrip ()؛
تاخیر (SpeedDelay) ؛
}
}
void fadeToBlack (int ledNo ، byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
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) ؛
#اندیف
}
// *** جایگزینی اینجا ***
void showStrip () {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show ()؛
#اندیف
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show ()؛
#اندیف
}
void setPixel (int پیکسل ، بایت قرمز ، بایت سبز ، بایت آبی) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor (پیکسل ، نوار. رنگ (قرمز ، سبز ، آبی)) ؛
#اندیف
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [پیکسل].r = قرمز ؛
leds [پیکسل].g = سبز ؛
leds [پیکسل].b = آبی ؛
#اندیف
}
void set همه (بایت قرمز ، بایت سبز ، بایت آبی) {
برای (int i = 0 ؛ i <NUM_LEDS ؛ i ++) {
setPixel (i ، قرمز ، سبز ، آبی) ؛
}
showStrip ()؛
}
مرحله 3: ایجاد ساعت
توصیه می کنم یک ساعت شیشه ای تهیه کنید که از داخل مسطح باشد. هنگامی که من از آینه انعطاف پذیر به داخل ساعت استفاده می کردم ، به دلیل بیرون آمدن اعداد داخل ساعت ، مشکلی بوجود آمد ، آینه خم شد و در نتیجه اثر آینه بی نهایت اتفاق نیفتاد. شما باید ورق آینه انعطاف پذیر و فیلم Privacy را داشته باشید تا جایی که ممکن است صاف باشید. اگر ساعت دارید ، مطمئن شوید که می توانید LED را بدون مشکل داخل آن قرار دهید.
مرحله 1: ساعت را باز کرده و شیشه جلو را بردارید
مرحله 2: فیلم Privacy را روی شیشه جلو قرار دهید (این ویدیو نحوه انجام این کار را به شما نشان می دهد)
مرحله 3: آینه انعطاف پذیر را در قسمت داخلی ساعت قرار دهید (قبل از انجام این کار عقربه های ساعت را بردارید)
مرحله 4: یک سوراخ در وسط ایجاد کنید تا عقربه های ساعت دوباره در آن قرار گیرند
مرحله 5: نوار LED را در اطراف دیوارهای داخلی ساعت قرار دهید (من برای این مرحله از تفنگ چسب حرارتی استفاده کردم)
مرحله 6: نوار LED را روشن کرده و شیشه را در بالای ساعت قرار دهید تا ببینید آیا اثر آینه بینهایت وجود دارد یا خیر
مرحله 7: پس از اتمام کار ، ساعت را کنار هم بگذارید و اجازه دهید سیمها به پشت منتقل شوند
مرحله 8: تبریک می گوییم که پروژه را به پایان رسانده اید و همه چیز باید خوب کار کند
اگر س questionsالی دارید ، لطفاً آنها را در زیر کامنت کنید (بدانید که ممکن است نتوانم پاسخ دهم ، اما تمام تلاش خود را خواهم کرد)
توصیه شده:
ساخت یک ساعت آینه بی نهایت: 15 مرحله (همراه با تصاویر)
یک ساعت آینه بی نهایت بسازید: در یک پروژه قبلی من یک آینه بینهایت ساختم ، جایی که هدف نهایی من ساخت آن به یک ساعت بود. (یک آینه بی نهایت رنگارنگ بسازید) من بعد از ساختن آن ، این کار را انجام ندادم ، گرچه به نظر جالب می آمد ، اما چند مورد وجود داشت
یک مکعب آینه بی نهایت آسان بسازید - بدون چاپ سه بعدی و برنامه نویسی: 15 مرحله (همراه با تصاویر)
یک مکعب آینه بی نهایت آسان بسازید | بدون چاپ سه بعدی و برنامه نویسی: همه یک مکعب بی نهایت خوب را دوست دارند ، اما به نظر می رسد که تهیه آن سخت باشد. هدف من از این دستورالعمل این است که گام به گام نحوه تهیه آن را به شما نشان دهم. نه تنها این ، بلکه با دستورالعمل هایی که به شما می دهم ، می توانید یکی از آنها را تهیه کنید
آینه بی نهایت آسان با Arduino Gemma & NeoPixels: 8 مرحله (همراه با تصاویر)
آینه بی نهایت آسان با Arduino Gemma و NeoPixels: ببینید! عمیقاً به آینه بینهایت افسونگر و فریبنده ساده نگاه کنید! تنها یک نوار LED در داخل ساندویچ آینه می درخشد تا جلوه ای از بازتاب بی پایان ایجاد کند. این پروژه مهارت ها و تکنیک های معرفی اولیه من Arduin را اعمال خواهد کرد
ساعت آینه بی نهایت: 5 مرحله (همراه با تصاویر)
ساعت آینه بی نهایت: این یک ساعت دست ساز است که عمدتا برای دکوراسیون ساخته شده است. چندین چراغ LED در ساعت وجود دارد ، وقتی روشن می شود ، یک دکوراسیون زیبا برای اتاق خواب است. وقتی خاموش است ، یک آینه کوچک است. البته این خودش یک ساعت است
ساعت دیواری آینه بی نهایت در قاب تصویر IKEA: 4 مرحله
ساعت دیواری آینه بی نهایت در قاب تصویر IKEA: سلام ، من همیشه می خواستم یک ساعت دیواری بسازم. در فروشگاه هایی مانند IKEA ساعت دیواری فوق العاده زیادی وجود دارد. من با این ساعت های تجاری مشکلاتی داشتم. آنها برای من خیلی بلند هستند (تیک تاک مداوم آزاردهنده است) ، من عقربه های ساعت را نمی بینم