Satura rādītājs:

Bezgalības spoguļa pulkstenis ar potenciometriem: 3 soļi
Bezgalības spoguļa pulkstenis ar potenciometriem: 3 soļi

Video: Bezgalības spoguļa pulkstenis ar potenciometriem: 3 soļi

Video: Bezgalības spoguļa pulkstenis ar potenciometriem: 3 soļi
Video: Очаровательный заброшенный замок 17 века во Франции (полностью замороженный во времени на 26 лет) 2024, Decembris
Anonim
Bezgalības spoguļa pulkstenis ar potenciometriem
Bezgalības spoguļa pulkstenis ar potenciometriem

Es saskāros ar bezgalības spoguli, un es atklāju, ka tas ir patiešām foršs. Tas mani iedvesmoja izveidot bezgalības spoguli, bet man tas bija vajadzīgs, lai tam būtu kāds mērķis. Tātad, es nolēmu izveidot funkcionējošu bezgalības spoguļa pulksteni. Šis ir bezgalības spogulis, kas ļauj mainīt režīmus, ātrumu un krāsas, izmantojot potenciometrus. (Piezīme: šī ir mana pirmā reize, kad gatavoju kaut ko līdzīgu)

Piegādes

Iedziļināsimies, kas jums nepieciešams, lai šo lietu izveidotu!

Jums būs nepieciešams…

1) 1 Arduino Uno

3) 1 maizes dēlis

4) 1 bīdāmā slēdzis

5) 3 potenciometri

6) 1 9V akumulators

7) 5 metru WS2811 LED sloksne

8) Jumper kabeļu vadi

9) Pulkstenis (pulkstenis, kuru izmantoju 12 collu lielu modernu pulksteni)

10) Elastīga spoguļa lapa (tā, kuru es izmantoju spoguļa loksni)

11) Privātuma filma (tā, kuru izmantoju vienvirziena spoguli)

12) Var būt nepieciešama lodēšana, tas ir atkarīgs no tā, kādi materiāli jums ir

1. solis: Elektroinstalācija

Elektroinstalācija
Elektroinstalācija
Elektroinstalācija
Elektroinstalācija

Elektroinstalācija ir diezgan vienkārša

- SPST slēdzis ieslēdz un izslēdz gaismas diodes (A0)

- Kreisais potenciometrs kontrolē gaismu (A1)

- vidējais potenciometrs kontrolē režīmus (A2)

- Labais potenciometrs kontrolē ātrumu (A3)

2. darbība: kods

#iekļaut

#definējiet PIN 6

#define NUM_LEDS 54

#definēt A0 A0

#define A1 A1

#definēt A2 A2

#definēt A3 A3

// Parametrs 1 = pikseļu skaits joslā

// Parametrs 2 = pin numurs (lielākā daļa ir derīgi)

// 3. parametrs = pikseļu tipa karodziņi, pēc vajadzības pievienojiet:

// NEO_KHZ800 800 KHz bitu plūsma (lielākā daļa NeoPixel produktu ar WS2812 gaismas diodēm)

// NEO_KHZ400 400 KHz (klasiskais “v1” (ne v2) FLORA pikseļi, WS2811 draiveri)

// NEO_GRB pikseļi ir savienoti ar GRB bitu plūsmu (lielākā daļa NeoPixel produktu)

// NEO_RGB pikseļi ir savienoti ar RGB bitu plūsmu (v1 FLORA pikseļi, nevis v2)

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

void setup () {

strip.begin ();

strip.show (); // Inicializēt visus pikseļus, lai tie būtu izslēgti

}

void loop () {

ja (analogRead (A0)> = 512) {

ja (analogRead (A2)> = 768) {

ja (analogRead (A3)> = 768) {

rainbowCycle (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A3)> = 512) {

rainbowCycle (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A3)> = 256) {

rainbowCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

cits {

rainbowCycle (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

} cits if (analogRead (A2)> = 512) {

ja (analogRead (A1)> = 768) {

CylonBounce (random (255), random (255), random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A1)> = 512) {

CylonBounce (nejaušs (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A1)> = 256) {

CylonBounce (0, izlases (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

cits {

CylonBounce (0, 0, izlases (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

} cits, ja (analogRead (A2)> = 256) {

ja (analogRead (A1)> = 768) {

baits r, g, b;

r = nejaušs (255);

g = nejaušs (255);

b = nejaušs (255);

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A1)> = 512) {

baits r, g, b;

r = nejaušs (255);

g = 0;

b = 0;

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits, ja (analogRead (A1)> = 256) {

baits r, g, b;

r = 0;

g = nejaušs (255);

b = 0;

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

cits {

baits r, g, b;

r = 0;

g = 0;

b = nejaušs (255);

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

}

cits {ja (analogRead (A1)> = 768) {

RunningLights (nejaušs (255), nejaušs (255), nejaušs (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits if (analogRead (A1)> = 512) {

RunningLights (nejaušs (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} cits, ja (analogRead (A1)> = 256) {

RunningLights (1, nejaušs (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

cits {

RunningLights (1, 1, random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

}

} vēl {

setAll (0, 0, 0);

}

}

void rainbowCycle (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {

baits *c;

uint16_t i, j;

(j = 0; j <256*5; j ++) {// 5 visu riteņu krāsu cikli

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

par (i = 0; i <NUM_LEDS; i ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

c = ritenis ((((i * 256 / NUM_LEDS) + j) & 255);

setPixel (i, *c, *(c+1), *(c+2));

}

showStrip ();

kavēšanās (SpeedDelay);

}

}

baits * ritenis (baits WheelPos) {

statiskais baits c [3];

ja (WheelPos <85) {

c [0] = WheelPos * 3;

c [1] = 255 - WheelPos * 3;

c [2] = 0;

} cits, ja (WheelPos <170) {

WheelPos -= 85;

c [0] = 255 - WheelPos * 3;

c [1] = 0;

c [2] = WheelPos * 3;

} vēl {

WheelPos -= 170;

c [0] = 0;

c [1] = WheelPos * 3;

c [2] = 255 - WheelPos * 3;

}

atgriešanās c;

}

void CylonBounce (baits sarkans, baits zaļš, baits zils, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {

int SpeedDelay;

int ReturnDelay;

ja (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;}

cits {SpeedDelay = 20; ReturnDelay = 60;}

par (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

setAll (0, 0, 0);

setPixel (i, sarkans/10, zaļš/10, zils/10);

par (int j = 1; j <= EyeSize; j ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

setPixel (i+j, sarkans, zaļš, zils);

}

setPixel (i+EyeSize+1, sarkans/10, zaļš/10, zils/10);

showStrip ();

kavēšanās (SpeedDelay);

}

kavēšanās (ReturnDelay);

par (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {

setAll (0, 0, 0);

setPixel (i, sarkans/10, zaļš/10, zils/10);

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

par (int j = 1; j <= EyeSize; j ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

setPixel (i+j, sarkans, zaļš, zils);

}

setPixel (i+EyeSize+1, sarkans/10, zaļš/10, zils/10);

showStrip ();

kavēšanās (SpeedDelay);

}

kavēšanās (ReturnDelay);

}

tukšs RunningLights (baits sarkans, baits zaļš, baits zils, int oldA0, int oldA1, int oldA2, int oldA3) {

int Pozīcija = 0;

int WaveDelay;

ja (analogRead (A3)> = 768) {WaveDelay = 80;}

cits, ja (analogRead (A3)> = 512) {WaveDelay = 60;}

citādi, ja (analogRead (A3)> = 256) {WaveDelay = 40;}

cits {WaveDelay = 20;}

par (int j = 0; j

{

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

Pozīcija ++; // = 0; // Pozīcija + likme;

par (int i = 0; i

// sinusa vilnis, 3 nobīdes viļņi veido varavīksni!

// pludiņa līmenis = sin (i + Pozīcija) * 127 + 128;

// setPixel (i, līmenis, 0, 0);

// pludiņa līmenis = sin (i + Pozīcija) * 127 + 128;

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

setPixel (i, ((sin (i + pozīcija) * 127 + 128)/255) * sarkans, ((grēks (i + pozīcija) * 127 + 128)/255) * zaļš, ((grēks (i + pozīcija) * 127 + 128)/255) * zils);

}

showStrip ();

kavēšanās (WaveDelay);

}

}

void meteorRain (baits sarkans, baits zaļš, baits zils, baits meteorsSize, baits meteorTrailDecay, Būla meteors

setAll (0, 0, 0);

int SpeedDelay;

ja (analogRead (A3)> = 768) {SpeedDelay = 80;}

cits, ja (analogRead (A3)> = 512) {SpeedDelay = 60;}

citādi, ja (analogRead (A3)> = 256) {SpeedDelay = 40;}

cits {SpeedDelay = 20;}

par (int i = 0; i <NUM_LEDS+NUM_LEDS; i ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

// izgaist spilgtumu visas gaismas diodes vienā solī

par (int j = 0; j

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

ja ((! meteorRandomDecay) || (nejauši (10)> 5)) {

fadeToBlack (j, meteorTrailDecay);

}

}

// zīmēt meteoru

par (int j = 0; j <meteorSize; j ++) {

ja (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((vecsA3+256)

pārtraukums;

}

ja ((i-j = 0)) {

setPixel (i-j, sarkans, zaļš, zils);

}

}

showStrip ();

kavēšanās (SpeedDelay);

}

}

void fadeToBlack (int ledNo, baits fadeValue) {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

uint32_t oldColor;

uint8_t r, g, b;

int vērtība;

oldColor = sloksne.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);

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

gaismas diodes [ledNo].fadeToBlackBy (fadeValue);

#endif

}

// *** NOMAINĪT ŠEIT ***

void showStrip () {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

strip.show ();

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

FastLED.show ();

#endif

}

void setPixel (int Pixel, baits sarkans, baits zaļš, baits zils) {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

strip.setPixelColor (Pixel, strip. Color (sarkans, zaļš, zils));

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

gaismas diodes [Pixel].r = sarkans;

gaismas diodes [pikseļi].g = zaļa;

gaismas diodes [pikseļi].b = zils;

#endif

}

void setAll (baits sarkans, baits zaļš, baits zils) {

par (int i = 0; i <NUM_LEDS; i ++) {

setPixel (i, sarkans, zaļš, zils);

}

showStrip ();

}

3. darbība: pulksteņa izveide

Pulksteņa izveide
Pulksteņa izveide
Pulksteņa izveide
Pulksteņa izveide
Pulksteņa izveide
Pulksteņa izveide

Es ieteiktu iegādāties stikla pulksteni, kas iekšpusē ir plakans. Kad es pielietoju elastīgo spoguli pulksteņa iekšpusē, radās problēma, jo pulksteņa iekšpusē iznira skaitļi, spogulis saliecās, kā rezultātā nenotika bezgalības spoguļa efekts. Jums jābūt elastīgai spoguļa loksnei un privātuma filmai, lai tā būtu pēc iespējas līdzena. Ja saņemat pulksteni, pārliecinieties, vai bez problēmām varat ievietot gaismas diodi iekšpusē.

1. darbība: atveriet pulksteni un noņemiet priekšējo stiklu

2. darbība. Uzlieciet konfidencialitātes filmu uz priekšējā stikla (šis video parāda, kā to izdarīt)

3. solis: uzklājiet elastīgo spoguli pulksteņa iekšpusē (pirms tam noņemiet pulksteņa rādītājus)

4. solis: izveidojiet caurumu vidū, lai pulksteņa rādītājus varētu ievietot atpakaļ

5. darbība: novietojiet LED sloksni ap pulksteņa iekšējām sienām (šim solim es izmantoju karstu līmes pistoli)

6. solis: ieslēdziet LED sloksni un novietojiet stiklu pulksteņa augšpusē, lai redzētu, vai pastāv bezgalības spoguļa efekts

7. solis: Kad esat pabeidzis visu, salieciet pulksteni kopā un ļaujiet vadiem iet atpakaļ

8. solis: Apsveicam, ka esat pabeidzis projektu, un visam vajadzētu darboties labi

Ja jums ir kādi jautājumi, lūdzu, komentējiet tos zemāk (ziniet, ka, iespējams, nevarēšu atbildēt, bet es darīšu visu iespējamo)

Ieteicams: