Sisällysluettelo:
Video: Ääretön peilikello potentiometreillä: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tulin ääretön peili ja huomasin sen olevan todella siistiä. Tämä inspiroi minua tekemään ääretön peili, mutta tarvitsin sitä tarkoitukselle. Joten päätin tehdä toimivan ääretön peilikello. Tämä on ääretön peili, jonka avulla voit muuttaa tiloja, nopeutta ja värejä potentiometreillä. (Huomaa: Tämä on ensimmäinen kerta, kun teen jotain tällaista)
Tarvikkeet
Katsotaanpa, mitä tarvitset tämän asian tekemiseen!
Tarvitset…
1) 1 Arduino Uno
3) 1 Leipälevy
4) 1 Liukukytkin
5) 3 potentiometriä
6) 1 9V akku
7) 5 metrin WS2811 LED -nauha
8) Jumper -kaapelijohdot
9) Kello (Kello, jota käytin 12 tuuman suuri moderni kello)
10) Joustava peililevy (jota käytin peililevyllä)
11) Yksityisyysfilmi (jota käytin One Way Mirror)
12) Juotos voidaan tarvita, tämä riippuu siitä, mitä materiaaleja sinulla on
Vaihe 1: Johdotus
Johdotus on melko yksinkertainen
- SPST -kytkin kytkee LED -valot päälle ja pois (A0)
- Vasen potentiometri ohjaa valoa (A1)
- Keskimmäinen potentiometri ohjaa tiloja (A2)
- Oikea potentiometri säätää nopeutta (A3)
Vaihe 2: Koodi
#sisältää
#määritä PIN 6
#määrittele NUM_LEDS 54
#määrittele A0 A0
#määrittele A1 A1
#määrittele A2 A2
#määrittele A3 A3
// Parametri 1 = pikselien lukumäärä nauhassa
// Parametri 2 = pin -numero (useimmat ovat kelvollisia)
// Parametri 3 = pikselityyppiset liput, lisää tarvittaessa:
// NEO_KHZ800 800 KHz: n bittivirta (useimmat NeoPixel -tuotteet ja WS2812 -LEDit)
// NEO_KHZ400 400 KHz (klassinen 'v1' (ei v2) FLORA -pikseliä, WS2811 -ohjaimet)
// NEO_GRB Pikselit on kytketty GRB -bittivirtaan (useimmat NeoPixel -tuotteet)
// NEO_RGB Pikselit on kytketty RGB -bittivirtaan (v1 FLORA -pikseliä, ei v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup () {
strip.begin ();
strip.show (); // Alusta kaikki pikselit pois päältä
}
void loop () {
if (analogRead (A0)> = 512) {
if (analogRead (A2)> = 768) {
if (analogRead (A3)> = 768) {
rainbowCycle (80, analoginen luku (A0), analoginen luku (A1), analoginen luku (A2), analoginen luku (A3));
} else if (analogRead (A3)> = 512) {
rainbowCycle (60, analoginen luku (A0), analoginen luku (A1), analoginen luku (A2), analoginen luku (A3));
} else if (analogRead (A3)> = 256) {
rainbowCycle (40, analoginen luku (A0), analoginen luku (A1), analoginen luku (A2), analoginen luku (A3));
}
muu{
rainbowCycle (20, analoginen luku (A0), analoginen luku (A1), analoginen luku (A2), analoginen luku (A3));
}
} else if (analogRead (A2)> = 512) {
jos (analoginenluku (A1)> = 768) {
CylonBounce (random (255), random (255), random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} else if (analoginenLue (A1)> = 512) {
CylonBounce (random (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} else if (analoginenLue (A1)> = 256) {
CylonBounce (0, random (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
muu{
CylonBounce (0, 0, random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} else if (analogRead (A2)> = 256) {
jos (analoginenluku (A1)> = 768) {
tavu r, g, b;
r = satunnainen (255);
g = satunnainen (255);
b = satunnainen (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} else if (analoginenLue (A1)> = 512) {
tavu r, g, b;
r = satunnainen (255);
g = 0;
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} else if (analoginenLue (A1)> = 256) {
tavu r, g, b;
r = 0;
g = satunnainen (255);
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
muu{
tavu r, g, b;
r = 0;
g = 0;
b = satunnainen (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
else {if (analogRead (A1)> = 768) {
RunningLights (random (255), random (255), random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} else if (analoginenLue (A1)> = 512) {
RunningLights (satunnainen (255), 1, 1, analoginen luku (A0), analoginen luku (A1), analoginen luku (A2), analoginen luku (A3));
} else if (analoginenLue (A1)> = 256) {
RunningLights (1, random (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
muu{
RunningLights (1, 1, random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
}muu{
setAll (0, 0, 0);
}
}
void rainbowCycle (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {
tavu *c;
uint16_t i, j;
(j = 0; j <256*5; j ++) {// 5 pyörän kaikkien värien sykliä
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) (((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
(i = 0; i <NUM_LEDS; i ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
c = Pyörä ((((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c+1), *(c+2));
}
showStrip ();
viive (SpeedDelay);
}
}
tavu * Pyörä (tavu WheelPos) {
staattinen tavu c [3];
jos (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
} muu jos (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
} muuta {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
paluu c;
}
void CylonBounce (tavun punainen, tavun vihreä, tavun sininen, 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;}
for (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) (((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
setAll (0, 0, 0);
setPixel (i, punainen/10, vihreä/10, sininen/10);
for (int j = 1; j <= EyeSize; j ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
setPixel (i+j, punainen, vihreä, sininen);
}
setPixel (i+EyeSize+1, punainen/10, vihreä/10, sininen/10);
showStrip ();
viive (SpeedDelay);
}
viive (ReturnDelay);
for (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {
setAll (0, 0, 0);
setPixel (i, punainen/10, vihreä/10, sininen/10);
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) (((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
for (int j = 1; j <= EyeSize; j ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
setPixel (i+j, punainen, vihreä, sininen);
}
setPixel (i+EyeSize+1, punainen/10, vihreä/10, sininen/10);
showStrip ();
viive (SpeedDelay);
}
viive (ReturnDelay);
}
tyhjä RunningLights (tavun punainen, tavun vihreä, tavun sininen, int vanhaA0, int oldA1, int oldA2, int oldA3) {
int Asema = 0;
int WaveDelay;
if (analogRead (A3)> = 768) {WaveDelay = 80;}
muuten jos (analoginenluku (A3)> = 512) {WaveDelay = 60;}
else if (analogRead (A3)> = 256) {WaveDelay = 40;}
else {WaveDelay = 20;}
varten (int j = 0; j
{
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
Sijoitus ++; // = 0; // Sijainti + korko;
varten (int i = 0; i
// siniaalto, 3 offset -aaltoa tekevät sateenkaaren!
// float level = sin (i + Position) * 127 + 128;
// setPixel (i, taso, 0, 0);
// float level = sin (i + Position) * 127 + 128;
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) (((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
setPixel (i, ((sin (i + sijainti) * 127 + 128)/255) * punainen, ((sin (i + asento) * 127 + 128)/255) * vihreä, ((sin (i + asema) * 127 + 128)/255) * sininen);
}
showStrip ();
viive (WaveDelay);
}
}
mitätön meteorRain (tavun punainen, tavun vihreä, tavun sininen, tavu meteoriKoko, tavumeteori
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 ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
// häivytä kaikkien LEDien kirkkaus yhdellä askeleella
varten (int j = 0; j
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) (((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
jos ((! meteorRandomDecay) || (satunnainen (10)> 5)) {
fadeToBlack (j, meteorTrailDecay);
}
}
// piirtää meteoriitti
for (int j = 0; j <meteorSize; j ++) {
jos (oldA0! = analoginenLue (A0) || ((vanhaA1-256)> analoginenLue (A1)) || ((vanhaA1+256) analoginenLue (A2)) || ((vanhaA2+256) analoginenLue (A3)) | | ((vanhaA3+256)
tauko;
}
jos ((i-j = 0)) {
setPixel (i-j, punainen, vihreä, sininen);
}
}
showStrip ();
viive (SpeedDelay);
}
}
void fadeToBlack (int ledNo, tavu fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int arvo;
oldColor = strip.getPixelColor (ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (vanha väri & 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);
#loppu Jos
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
ledit [ledNo].fadeToBlackBy (fadeValue);
#loppu Jos
}
// *** KORVAA TÄSTÄ ***
void showStrip () {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show ();
#loppu Jos
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show ();
#loppu Jos
}
void setPixel (int Pixel, tavu punainen, tavu vihreä, tavu sininen) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor (Pixel, strip. Color (punainen, vihreä, sininen));
#loppu Jos
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
ledit [Pixel].r = punainen;
ledit [pikseli].g = vihreä;
ledit [Pixel].b = sininen;
#loppu Jos
}
void setAll (tavu punainen, tavu vihreä, tavu sininen) {
(int i = 0; i <NUM_LEDS; i ++) {
setPixel (i, punainen, vihreä, sininen);
}
showStrip ();
}
Vaihe 3: Kellon luominen
Suosittelen hankkimaan lasikellon, joka on litteä sisältä. Kun laitoin joustavaa peiliä kellon sisäpuolelle, oli ongelma, koska kellon sisällä olevat numerot ponnahtivat ulos, peili taipui, jolloin äärettömän peilin vaikutus ei tapahtunut. Sinun on oltava joustava peililevy ja tietosuojakalvo mahdollisimman tasainen. Jos saat kellon, varmista, että voit sijoittaa LEDin ilman ongelmia.
Vaihe 1: Avaa kello ja poista etulasi
Vaihe 2: Laita yksityisyysfilmi etulasiin (tämä video näyttää kuinka se tehdään)
Vaihe 3: Kiinnitä joustava peili kellon sisäpuolelle (Irrota kellot ennen kuin teet tämän)
Vaihe 4: Tee keskelle reikä kellon osoittimien asettamiseksi takaisin
Vaihe 5: Aseta LED -nauha kellon sisäseinien ympärille (tässä vaiheessa käytin kuumaliimapistoolia)
Vaihe 6: Kytke LED -nauha päälle ja aseta lasi kellon päälle nähdäksesi, onko ääretön peilitehoste olemassa
Vaihe 7: Kun olet tehnyt kaiken, laita kello yhteen ja anna johtojen kulkea taaksepäin
Vaihe 8: Onnittelut projektin suorittamisesta ja kaiken pitäisi toimia hyvin
Jos sinulla on kysyttävää, kommentoi niitä alla (tiedä, etten ehkä pysty vastaamaan, mutta yritän parhaani)
Suositeltava:
Tee ääretön peilikello: 15 vaihetta (kuvilla)
Tee ääretön peilikello: Edellisessä projektissa rakensin äärettömän peilin, jonka perimmäisenä tavoitteena oli tehdä siitä kello. (Tee värikäs ääretön peili) En jatkanut sitä sen rakentamisen jälkeen, koska vaikka se näytti siistiltä, siellä oli muutamia asioita
Helppo ääretön peili Arduino Gemma & Neo -pikselillä: 8 vaihetta (kuvilla)
Helppo ääretön peili Arduino Gemma & NeoPixeleillä: Katso! Katso syvälle lumoavaan ja petollisesti yksinkertaiseen äärettömyyspeiliin! Yksittäinen LED -valonauha loistaa sisäänpäin peilikerroksessa luodakseen loputtoman heijastuksen vaikutuksen. Tämä projekti soveltaa intro Arduinin taitoja ja tekniikoita
Ääretön peili LCD- ja IR -anturilla: 5 vaihetta
Ääretön peili LCD- ja IR -anturilla: Tämä projekti näyttää sinulle, kuinka voit tehdä ääretön peili. Perusajatuksena on, että peilissä olevat LEDit luovat valoa, joka heijastuu taustapeilistä etupeiliin, josta valoa pääsee ulos, jotta voimme nähdä sisälle ja niin
Helppo DIY -ääretön peilikello: 3 vaihetta
Helppo DIY Infinity Mirror Clock: Jos olet kyllästynyt normaaliin kelloon, kokeile tehdä tämä viileä DIY Infinity Mirror Clock. Tasoittaa huoneesi
Ääretön peilikello: 5 vaihetta (kuvilla)
Ääretön peilikello: Tämä on käsintehty kello lähinnä koristeluun.Kellossa on useita LED -valoja, kun se on päällä, se on kaunis sisustus makuuhuoneeseen. Kun se on pois päältä, se on pieni peili. Se on tietysti kello itsessään