Satura rādītājs:
Video: Bezgalības spoguļa pulkstenis ar potenciometriem: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
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 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
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:
Izveidojiet bezgalības spoguļa pulksteni: 15 soļi (ar attēliem)
Izveidojiet bezgalības spoguļa pulksteni: Iepriekšējā projektā es uzbūvēju bezgalības spoguli, kur mans galvenais mērķis bija to padarīt par pulksteni. (Izveidojiet krāsainu bezgalības spoguli) Pēc tā uzbūvēšanas es to nedarīju, jo, lai gan tas izskatījās forši, bija dažas lietas ar
Vortex pulkstenis: bezgalības spoguļa rokas pulkstenis: 10 soļi (ar attēliem)
Vortex Watch: bezgalības spoguļa rokas pulkstenis: šī projekta mērķis bija izveidot bezgalības spoguļpulksteņa valkājamu versiju. Tas izmanto savas RGB gaismas diodes, lai norādītu laiku, piešķirot stundas, minūtes un sekundes attiecīgi sarkanajai, zaļajai un zilajai gaismai un pārklājot šīs nokrāsas
Vienkāršs DIY bezgalības spoguļa pulkstenis: 3 soļi
Vienkāršs DIY bezgalības spoguļpulkstenis: ja jums ir garlaicīgi ar parasto pulksteni, mēģiniet izveidot šo foršo DIY bezgalības spoguļpulksteni. Lai izlīdzinātu savu istabu
Bezgalības spoguļa pulkstenis: 5 soļi (ar attēliem)
Bezgalības spoguļpulkstenis: Šis ir ar rokām darināts pulkstenis galvenokārt dekorēšanai. Pulkstenī ir vairākas LED gaismas, kad tas ir ieslēgts, tas ir skaists guļamistabas rotājums. Kad tas ir izslēgts, tas ir mazs spogulis. Protams, tas ir pats pulkstenis
Bezgalības spoguļa sienas pulkstenis IKEA attēlu rāmī: 4 soļi
Infinity Mirror sienas pulkstenis IKEA attēlu rāmī: Sveiki, es vienmēr gribēju izveidot sienas pulksteni. Veikalos, piemēram, IKEA, ir daudz brīnišķīgu sienas pulksteņu. Man bija dažas problēmas ar šiem komerciālajiem pulksteņiem. Tie man ir pārāk skaļi (nepārtraukta tic-tac ir kaitinoša), es neredzu stundas rādītājus