Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-23 15:12
Natagpuan ko ang infinity mirror at nalaman kong ito ay isang cool na cool. Ito ang nagbigay inspirasyon sa akin na gumawa ng infinity mirror, ngunit kailangan ko ito upang magkaroon ng isang layunin. Kaya, nagpasya akong gumawa ng isang gumaganang infinity mirror na orasan. Ito ay isang infinity mirror na nagbibigay-daan sa iyo upang baguhin ang mga mode, bilis at mga kulay gamit ang potentiometers. (Tandaan: Ito ang aking unang pagkakataon na gumawa ng katulad nito)
Mga gamit
Sumisid tayo sa kung ano ang kailangan mo upang magawa ang bagay na ito!
Kakailanganin mong…
1) 1 Arduino Uno
3) 1 Breadboard
4) 1 Slide Switch
5) 3 Mga Potensyal
6) 1 9V na baterya
7) 5 metro WS2811 LED Strip
8) Mga Jumper Cable Wires
9) Isang Clock (Ang Clock na ginamit ko 12 inch Large Modern Clock)
10) Flexible Mirror Sheet (Ang ginamit kong Mirror Sheet)
11) Pelikula sa Privacy (Ang ginamit kong One Way Mirror)
12) Maaaring kailanganin ang paghihinang depende ito sa kung ano ang mayroon kang mga materyal
Hakbang 1: Mga kable
Ang mga kable ay medyo simple
- Ang SPST Switch ay nakabukas at patayin ang LED (A0)
- Kinokontrol ng kaliwang potensyomiter ang ilaw (A1)
- Kinokontrol ng gitnang potensyomiter ang mga mode (A2)
- Kinokontrol ng tamang potensyomiter ang bilis (A3)
Hakbang 2: Ang Code
# isama
# tukuyin ang PIN 6
# tukuyin ang NUM_LEDS 54
# tukuyin ang A0 A0
# tukuyin ang A1 A1
# tukuyin ang A2 A2
# tukuyin ang A3 A3
// Parameter 1 = bilang ng mga pixel sa strip
// Parameter 2 = pin number (may bisa ang karamihan)
// Parameter 3 = mga flag ng uri ng pixel, idagdag nang sama-sama kung kinakailangan:
// NEO_KHZ800 800 KHz bitstream (karamihan sa mga produktong NeoPixel w / WS2812 LEDs)
// NEO_KHZ400 400 KHz (klasiko 'v1' (hindi v2) FLORA pixel, mga driver ng WS2811)
// NEO_GRB Pixels ay naka-wire para sa GRB bitstream (karamihan sa mga produktong NeoPixel)
// NEO_RGB Pixels ay naka-wire para sa RGB bitstream (v1 FLORA pixel, hindi v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
walang bisa ang pag-setup () {
strip.begin ();
strip.show (); // Initialize all pixel to 'off'
}
void loop () {
kung (analogRead (A0)> = 512) {
kung (analogRead (A2)> = 768) {
kung (analogRead (A3)> = 768) {
bahaghariCycle (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A3)> = 512) {
bahaghariCycle (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A3)> = 256) {
bahaghariCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
iba pa {
bahaghariCycle (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} iba pa kung (analogRead (A2)> = 512) {
kung (analogRead (A1)> = 768) {
CylonBounce (random (255), random (255), random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 512) {
CylonBounce (random (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 256) {
CylonBounce (0, random (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
iba pa {
CylonBounce (0, 0, random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} iba pa kung (analogRead (A2)> = 256) {
kung (analogRead (A1)> = 768) {
byte r, g, b;
r = random (255);
g = random (255);
b = random (255);
meteorRain (r, g, b, 10, 20, totoo, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 512) {
byte r, g, b;
r = random (255);
g = 0;
b = 0;
meteorRain (r, g, b, 10, 20, totoo, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 256) {
byte r, g, b;
r = 0;
g = random (255);
b = 0;
meteorRain (r, g, b, 10, 20, totoo, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
iba pa {
byte r, g, b;
r = 0;
g = 0;
b = random (255);
meteorRain (r, g, b, 10, 20, totoo, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
iba pa {kung (analogRead (A1)> = 768) {
RunningLights (random (255), random (255), random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 512) {
RunningLights (random (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} iba pa kung (analogRead (A1)> = 256) {
RunningLights (1, random (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
iba pa {
RunningLights (1, 1, random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
} iba pa {
setAll (0, 0, 0);
}
}
void rainbowCycle (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {
byte * c;
uint16_t i, j;
para sa (j = 0; j <256 * 5; j ++) {// 5 cycle ng lahat ng mga kulay sa gulong
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
para sa (i = 0; i <NUM_LEDS; i ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
c = Wheel (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, * c, * (c + 1), * (c + 2));
}
showStrip ();
antala (SpeedDelay);
}
}
byte * Wheel (byte WheelPos) {
static byte c [3];
kung (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
} iba pa kung (WheelPos <170) {
WheelPos - = 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
} iba pa {
WheelPos - = 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
bumalik c;
}
walang bisa ang CylonBounce (byte red, byte green, byte blue, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {
int SpeedDelay;
int ReturnDelay;
kung (analogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}
kung hindi man (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}
kung hindi man (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}
iba pa {SpeedDelay = 20; ReturnDelay = 60;}
para sa (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
setAll (0, 0, 0);
setPixel (i, pula / 10, berde / 10, asul / 10);
para sa (int j = 1; j <= EyeSize; j ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
setPixel (i + j, pula, berde, asul);
}
setPixel (i + EyeSize + 1, pula / 10, berde / 10, asul / 10);
showStrip ();
antala (SpeedDelay);
}
antala (ReturnDelay);
para sa (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {
setAll (0, 0, 0);
setPixel (i, pula / 10, berde / 10, asul / 10);
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
para sa (int j = 1; j <= EyeSize; j ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
setPixel (i + j, pula, berde, asul);
}
setPixel (i + EyeSize + 1, pula / 10, berde / 10, asul / 10);
showStrip ();
antala (SpeedDelay);
}
antala (ReturnDelay);
}
walang bisa ang RunningLights (byte red, byte green, byte blue, int oldA0, int oldA1, int oldA2, int oldA3) {
int Posisyon = 0;
int WaveDelay;
kung (analogRead (A3)> = 768) {WaveDelay = 80;}
kung hindi man (analogRead (A3)> = 512) {WaveDelay = 60;}
kung hindi man (analogRead (A3)> = 256) {WaveDelay = 40;}
iba pa {WaveDelay = 20;}
para sa (int j = 0; j
{
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
Posisyon ++; // = 0; // Posisyon + Rate;
para sa (int i = 0; i
// sine wave, 3 offset waves na gumawa ng isang bahaghari!
// float level = sin (i + Position) * 127 + 128;
// setPixel (i, level, 0, 0);
// float level = sin (i + Position) * 127 + 128;
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
setPixel (i, ((sin (i + Posisyon) * 127 + 128) / 255) * pula, ((kasalanan (i + Posisyon) * 127 + 128) / 255) * berde, ((kasalanan (i + Posisyon) * 127 + 128) / 255) * asul);
}
showStrip ();
antala (WaveDelay);
}
}
void meteorRain (byte red, byte green, byte blue, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int oldA0, int oldA1, int oldA2, int oldA3) {
setAll (0, 0, 0);
int SpeedDelay;
kung (analogRead (A3)> = 768) {SpeedDelay = 80;}
kung hindi man kung (analogRead (A3)> = 512) {SpeedDelay = 60;}
kung hindi man kung (analogRead (A3)> = 256) {SpeedDelay = 40;}
iba pa {SpeedDelay = 20;}
para sa (int i = 0; i <NUM_LEDS + NUM_LEDS; i ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
// fade brightness all LEDs isang hakbang
para sa (int j = 0; j
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
kung ((! meteorRandomDecay) || (random (10)> 5)) {
fadeToBlack (j, meteorTrailDecay);
}
}
// gumuhit ng bulalakaw
para sa (int j = 0; j <meteorSize; j ++) {
kung (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1 + 256) analogRead (A2)) || ((oldA2 + 256) analogRead (A3)) | | ((oldA3 + 256)
pahinga;
}
kung ((i-j = 0)) {
setPixel (i-j, pula, berde, asul);
}
}
showStrip ();
antala (SpeedDelay);
}
}
void fadeToBlack (int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int halaga;
oldColor = strip.getPixelColor (ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (oldColor & 0x000000ffUL);
r = (r <= 10)? 0: (int) ---------------- (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);
#tapusin kung
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [ledNo].fadeToBlackBy (fadeValue);
#tapusin kung
}
// *** PALITAN DITO ***
walang bisa showStrip () {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show ();
#tapusin kung
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show ();
#tapusin kung
}
void setPixel (int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor (Pixel, strip. Color (pula, berde, asul));
#tapusin kung
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [Pixel].r = pula;
leds [Pixel].g = berde;
leds [Pixel].b = asul;
#tapusin kung
}
void setAll (byte red, byte green, byte blue) {
para sa (int i = 0; i <NUM_LEDS; i ++) {
setPixel (i, pula, berde, asul);
}
showStrip ();
}
Hakbang 3: Paglikha ng Clock
Inirerekumenda ko ang pagkuha ng isang baso na orasan na patag sa loob. Kapag inilalapat ko ang kakayahang umangkop na salamin sa loob ng orasan mayroong isang problema dahil sa mga numero sa loob ng orasan na lumalabas, ang salamin ay baluktot na nagresulta sa hindi nagaganap na mirror mirror na hindi nangyayari. Kailangan mong magkaroon ng kakayahang umangkop na mirror sheet at ang Pelikula sa Pagkapribado upang maging flat hangga't maaari. Kung nakakakuha ka ng orasan siguraduhin na mailalagay mo ang LED sa loob nang walang problema.
Hakbang 1: Buksan ang orasan at alisin ang front glass
Hakbang 2: Ilagay ang Privacy Film sa harap ng baso (Ipinapakita sa iyo ng video na ito kung paano ito gawin)
Hakbang 3: Ilapat ang kakayahang umangkop na salamin sa loob ng orasan (Alisin ang mga kamay ng mga orasan bago gawin ito)
Hakbang 4: Gumawa ng isang butas sa gitna para mailagay muli ang mga kamay ng orasan
Hakbang 5: Ilagay ang LED strip sa paligid ng mga dingding sa loob ng orasan (Gumamit ako ng isang mainit na baril para sa hakbang na ito)
Hakbang 6: I-on ang LED strip at ilagay ang baso sa tuktok ng orasan upang makita kung ang epekto ng infinity mirror ay naroroon
Hakbang 7: Kapag tapos ka na sa lahat ng bagay pagsamahin ang orasan at hayaang dumaan sa likod ang mga wire
Hakbang 8: Congrats nakumpleto mo ang proyekto at ang lahat ay dapat na gumana nang maayos
Kung mayroon kang anumang mga katanungan mangyaring puna sa kanila sa ibaba (Alamin na maaaring hindi ako tumugon, ngunit gagawin ko ang aking makakaya)
Inirerekumendang:
Gumawa ng isang Infinity Mirror Clock: 15 Hakbang (na may Mga Larawan)
Gumawa ng isang Infinity Mirror Clock: Sa isang nakaraang proyekto bumuo ako ng isang infinity mirror, kung saan ang aking panghuli na layunin para dito ay gawin itong isang orasan. (Gumawa ng isang Makukulay na Infinity Mirror) Hindi ko ito tinuloy matapos ang pagbuo nito dahil, kahit na mukhang cool ito, may ilang mga bagay na kasama
Gumawa ng isang 2 Sided, Desktop Infinity Mirror: 14 Mga Hakbang (na may Mga Larawan)
Gumawa ng isang 2 Sided, Desktop Infinity Mirror: Karamihan sa mga infinity mirror na nakita ko ay isang panig, ngunit nais kong bumuo ng isang medyo kakaiba. Ang isang ito ay magiging 2 panig at idinisenyo upang maipakita ito sa isang desktop o isang istante. Ito ay isang madali, napaka-cool na proyekto upang gawin!
Basahin ang Mga Halaga ng ADC Mula sa Mga Potensyal: 4 Mga Hakbang
Basahin ang Mga Halaga ng ADC Mula sa Mga Potensyal: Sa artikulong ito ipapakita ko sa iyo kung paano basahin ang mga halaga ng ADC mula sa isang potensyomiter. Ito ang batayan ng programa ng Arduino. na binabasa ang mga halagang analog na ginagamit ang Analog pin na ibinigay ng Arduino. maliban sa paggamit ng potentio, maraming mga sensor na
Infinity Mirror Clock: 5 Hakbang (na may Mga Larawan)
Infinity Mirror Clock: Ito ay isang handmade na orasan pangunahin para sa dekorasyon. Mayroong maraming mga LED light sa orasan, kapag naka-on, ito ay isang magandang dekorasyon para sa kwarto. Kapag naka-off, ito ay isang maliit na salamin. Siyempre, ito mismo ay isang orasan
Hexagon Infinity Mirror Na May Mga LED Light at Laser Wire: 5 Hakbang (na may Mga Larawan)
Hexagon Infinity Mirror Sa Mga LED Light at Laser Wire: Kung naghahanap ka upang lumikha ng isang natatanging piraso ng pag-iilaw, ito ay talagang isang kasiya-siyang proyekto. Dahil sa pagiging kumplikado, ang ilan sa mga hakbang ay talagang nangangailangan ng ilang katumpakan, ngunit mayroong ilang iba't ibang mga direksyon na maaari mong sundin, depende sa pangkalahatang hitsura