Innholdsfortegnelse:
Video: Uendelig speilklokke med potensiometre: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Jeg kom over uendelig speil, og jeg syntes det var veldig kult. Dette inspirerte meg til å lage et uendelig speil, men jeg trengte det for å ha en hensikt. Så jeg bestemte meg for å lage en fungerende uendelig speilklokke. Dette er et uendelig speil som lar deg endre moduser, hastighet og farger ved hjelp av potensiometre. (Merk: Dette er første gang jeg lager noe slikt)
Rekvisita
La oss dykke ned i hva du trenger for å lage denne tingen!
Du vil trenge…
1) 1 Arduino Uno
3) 1 brødbrett
4) 1 skyvebryter
5) 3 potensiometre
6) 1 9V batteri
7) 5 meter WS2811 LED -stripe
8) Jumper Cable Wires
9) En klokke (klokken jeg brukte 12 tommers stor moderne klokke)
10) Fleksibelt speilark (det jeg brukte speilark)
11) Privacy Film (den jeg brukte One Way Mirror)
12) Lodding kan være nødvendig, dette avhenger av hvilke materialer du har
Trinn 1: Kabling
Ledningen er ganske enkel
- SPST -bryteren slår av og på lysdiodene (A0)
- Det venstre potensiometeret styrer lyset (A1)
- Det midtre potensiometeret styrer modusene (A2)
- Høyre potensiometer styrer hastigheten (A3)
Trinn 2: Koden
#inkludere
#definere PIN 6
#define NUM_LEDS 54
#definere A0 A0
#definere A1 A1
#definere A2 A2
#definere A3 A3
// Parameter 1 = antall piksler i stripen
// Parameter 2 = pin -nummer (de fleste er gyldige)
// Parameter 3 = piksel type flagg, legg sammen etter behov:
// NEO_KHZ800 800 KHz bitstream (de fleste NeoPixel -produkter m/WS2812 lysdioder)
// NEO_KHZ400 400 KHz (klassisk 'v1' (ikke v2) FLORA -piksler, WS2811 -drivere)
// NEO_GRB Piksler er koblet til GRB -bitstrøm (de fleste NeoPixel -produkter)
// NEO_RGB -piksler er koblet til RGB -bitstrøm (v1 FLORA -piksler, ikke v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
ugyldig oppsett () {
strip.begin ();
strip.show (); // Initialiser alle piksler til "av"
}
void loop () {
if (analogRead (A0)> = 512) {
hvis (analogRead (A2)> = 768) {
if (analogRead (A3)> = 768) {
rainbowCycle (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A3)> = 512) {
rainbowCycle (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A3)> = 256) {
rainbowCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
ellers{
rainbowCycle (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} annet hvis (analogRead (A2)> = 512) {
if (analogRead (A1)> = 768) {
CylonBounce (tilfeldig (255), tilfeldig (255), tilfeldig (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 512) {
CylonBounce (tilfeldig (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 256) {
CylonBounce (0, random (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
ellers{
CylonBounce (0, 0, random (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} annet hvis (analogRead (A2)> = 256) {
if (analogRead (A1)> = 768) {
byte r, g, b;
r = tilfeldig (255);
g = tilfeldig (255);
b = tilfeldig (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 512) {
byte r, g, b;
r = tilfeldig (255);
g = 0;
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 256) {
byte r, g, b;
r = 0;
g = tilfeldig (255);
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
ellers{
byte r, g, b;
r = 0;
g = 0;
b = tilfeldig (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
annet {if (analogRead (A1)> = 768) {
RunningLights (tilfeldig (255), tilfeldig (255), tilfeldig (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 512) {
RunningLights (tilfeldig (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} annet hvis (analogRead (A1)> = 256) {
RunningLights (1, random (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
ellers{
RunningLights (1, 1, random (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
}ellers{
setAll (0, 0, 0);
}
}
void rainbowCycle (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {
byte *c;
uint16_t i, j;
for (j = 0; j <256*5; j ++) {// 5 sykluser med alle farger på hjulet
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
for (i = 0; i <NUM_LEDS; i ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
c = Hjul (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c+1), *(c+2));
}
showStrip ();
forsinkelse (SpeedDelay);
}
}
byte * Wheel (byte WheelPos) {
statisk byte c [3];
hvis (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
} annet hvis (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
} annet {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
returnere c;
}
void CylonBounce (byte rød, byte grønn, byte blå, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {
int SpeedDelay;
int ReturnDelay;
hvis (analogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}
ellers hvis (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}
ellers hvis (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}
annet {SpeedDelay = 20; ReturnDelay = 60;}
for (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
setAll (0, 0, 0);
setPixel (i, rød/10, grønn/10, blå/10);
for (int j = 1; j <= EyeSize; j ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
setPixel (i+j, rød, grønn, blå);
}
setPixel (i+EyeSize+1, rød/10, grønn/10, blå/10);
showStrip ();
forsinkelse (SpeedDelay);
}
forsinkelse (ReturnDelay);
for (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {
setAll (0, 0, 0);
setPixel (i, rød/10, grønn/10, blå/10);
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
for (int j = 1; j <= EyeSize; j ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
setPixel (i+j, rød, grønn, blå);
}
setPixel (i+EyeSize+1, rød/10, grønn/10, blå/10);
showStrip ();
forsinkelse (SpeedDelay);
}
forsinkelse (ReturnDelay);
}
void RunningLights (byte rød, byte grønn, byte blå, int gammelA0, int gammelA1, int gammelA2, int gammelA3) {
int Posisjon = 0;
int WaveDelay;
hvis (analogRead (A3)> = 768) {WaveDelay = 80;}
ellers hvis (analogRead (A3)> = 512) {WaveDelay = 60;}
ellers hvis (analogRead (A3)> = 256) {WaveDelay = 40;}
annet {WaveDelay = 20;}
for (int j = 0; j
{
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
Posisjon ++; // = 0; // Posisjon + Rate;
for (int i = 0; i
// sinusbølge, 3 offsetbølger lager en regnbue!
// flytnivå = sin (i + posisjon) * 127 + 128;
// setPixel (i, nivå, 0, 0);
// flytnivå = sin (i + posisjon) * 127 + 128;
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
setPixel (i, ((sin (i + posisjon) * 127 + 128)/255) * rød, ((sin (i + posisjon) * 127 + 128)/255) * grønn, ((sin (i + posisjon) * 127 + 128)/255) * blå);
}
showStrip ();
forsinkelse (WaveDelay);
}
}
void meteorRain (byte rød, byte grønn, byte blå, byte meteorSize, byte meteorTrailDecay, boolsk meteorRandomDecay, int oldA0, int oldA1, int oldA2, int oldA3) {
setAll (0, 0, 0);
int SpeedDelay;
hvis (analogRead (A3)> = 768) {SpeedDelay = 80;}
ellers hvis (analogRead (A3)> = 512) {SpeedDelay = 60;}
ellers hvis (analogRead (A3)> = 256) {SpeedDelay = 40;}
annet {SpeedDelay = 20;}
for (int i = 0; i <NUM_LEDS+NUM_LEDS; i ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
// visne lysstyrke alle lysdioder ett trinn
for (int j = 0; j
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
hvis ((! meteorRandomDecay) || (tilfeldig (10)> 5)) {
fadeToBlack (j, meteorTrailDecay);
}
}
// tegne meteor
for (int j = 0; j <meteorSize; j ++) {
hvis (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((oldA3+256)
gå i stykker;
}
hvis ((i-j = 0)) {
setPixel (i-j, rød, grønn, blå);
}
}
showStrip ();
forsinkelse (SpeedDelay);
}
}
void fadeToBlack (int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int verdi;
oldColor = strip.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);
#slutt om
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [ledNo].fadeToBlackBy (fadeValue);
#slutt om
}
// *** ERSTAT TIL HER ***
void showStrip () {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show ();
#slutt om
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show ();
#slutt om
}
void setPixel (int Pixel, byte rød, byte grønn, byte blå) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor (Pixel, strip. Color (rød, grønn, blå));
#slutt om
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
lysdioder [Pixel].r = rød;
lysdioder [Pixel].g = grønn;
lysdioder [Pixel].b = blå;
#slutt om
}
void setAll (byte rød, byte grønn, byte blå) {
for (int i = 0; i <NUM_LEDS; i ++) {
setPixel (i, rød, grønn, blå);
}
showStrip ();
}
Trinn 3: Opprette klokken
Jeg vil anbefale å få en glassklokke som er flat på innsiden. Da jeg påførte det fleksible speilet på innsiden av klokken, var det et problem på grunn av at tallene inne i klokken sprang ut, speilet bøyde og resulterte i at uendelig speileffekt ikke skjedde. Du må ha det fleksible speilarket og Privacy Film for å være så flatt som mulig. Hvis du får en klokke, må du sørge for å plassere LED -en inne uten problemer.
Trinn 1: Åpne klokken og fjern frontglasset
Trinn 2: Sett på personvernfilmen på frontglasset (Denne videoen viser deg hvordan du gjør det)
Trinn 3: Påfør det fleksible speilet på innsiden av klokken (Fjern klokkene før du gjør dette)
Trinn 4: Lag et hull i midten for at klokkeviserne skal settes inn igjen
Trinn 5: Plasser LED -stripen rundt klokkens innvendige vegger (jeg brukte en varm limpistol til dette trinnet)
Trinn 6: Slå på LED -stripen og legg glasset på toppen av klokken for å se om uendelig speileffekt er der
Trinn 7: Når du er ferdig med alt, sett klokken sammen og la ledningene passere til baksiden
Trinn 8: Gratulerer med at du har fullført prosjektet, og alt skal fungere fint
Hvis du har spørsmål, vennligst kommenter dem nedenfor (vet at jeg kanskje ikke kan svare, men jeg vil gjøre mitt beste)
Anbefalt:
Lag en uendelig speilklokke: 15 trinn (med bilder)
Lag en Infinity Mirror Clock: I et tidligere prosjekt bygde jeg et uendelig speil, der mitt endelige mål for det var å gjøre det til en klokke. (Lag et fargerikt uendelig speil) Jeg forfulgte ikke det etter å ha bygd det, for selv om det så kult ut, var det noen ting med
Pulserende LED ved hjelp av en 555 timer og potensiometre: 4 trinn
Pulserende LED ved hjelp av en 555 timer og potensiometre: Hilsen! I denne instruksen vil vi vise deg hvordan du konstruerer en LED Dimmer -krets som går på en justerbar timet sløyfe ved hjelp av et potensiometer, en 555 timer og andre grunnleggende kretskomponenter. Vi fikk først ideen til dette prosjektet fra
2 potensiometre og 2 servoer: kontrollert bevegelse med Arduino: 4 trinn
2 potensiometre og 2 servoer: kontrollert bevegelse med Arduino: Først må du samle relevant materiale for å sette denne kretsen sammen
Hvordan lage et uendelig speilhjerte med Arduino og RGB -lysdioder: 8 trinn (med bilder)
Hvordan lage et uendelig speilhjerte med Arduino og RGB -lysdioder: En gang i en fest så jeg og kona et uendelig speil, og hun ble fascinert av utseendet og sa stadig at jeg vil ha det! En god mann lytter og husker alltid, så jeg bestemte meg for å bygge en til henne som en valentinsdag
Kontrollere 3 servomotorer med 3 potensiometre og en Arduino: 11 trinn (med bilder)
Kontrollere 3 servomotorer med 3 potensiometre og en Arduino: Hei. Dette er min første instruks, så jeg håper du vil være tålmodig med meg hvis jeg gjør noen feil når jeg konfigurerer det. Det er skrevet for nybegynnere, så de mer avanserte blant dere kan hoppe over mye av dette og bare komme til å koble det til. Målet jeg satte meg selv