Talaan ng mga Nilalaman:

Infinity Mirror Clock Na May Mga Potensyal: 3 Hakbang
Infinity Mirror Clock Na May Mga Potensyal: 3 Hakbang

Video: Infinity Mirror Clock Na May Mga Potensyal: 3 Hakbang

Video: Infinity Mirror Clock Na May Mga Potensyal: 3 Hakbang
Video: 3-часовой марафон паранормальных и необъяснимых историй 2024, Hulyo
Anonim
Infinity Mirror Clock Sa Mga Potensyal
Infinity Mirror Clock Sa Mga Potensyal

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

Kable
Kable
Kable
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

Paglikha ng Clock
Paglikha ng Clock
Paglikha ng Clock
Paglikha ng Clock
Paglikha ng Clock
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: