Indholdsfortegnelse:

Fiberoptiske lamper i lærredstryk: 5 trin
Fiberoptiske lamper i lærredstryk: 5 trin

Video: Fiberoptiske lamper i lærredstryk: 5 trin

Video: Fiberoptiske lamper i lærredstryk: 5 trin
Video: Cara pasang Saklar Ganda, Seri, Double-lampu penerangan, Single line diagram, Instalasi listrik 2024, Juli
Anonim
Image
Image
Fiberoptiske lamper i lærredstryk
Fiberoptiske lamper i lærredstryk

Dette projekt tilføjer et unikt spin på et standard lærredstryk. Jeg programmerede i 4 forskellige belysningstilstande, men du kan nemt tilføje flere. Tilstanden ændres, hver gang du slukker og tænder den i stedet for at have en separat knap for at minimere skader på rammen. Batterierne skal holde i mere end 50 timers brug - jeg er ikke rigtig sikker, men jeg lavede et lignende projekt til en ven, og den brugte 5x så mange lamper og har varet 20+ timer på et enkelt sæt batterier.

Materialer

  • Lærredstryk med brugbar plads - jeg bestilte mit fra https://www.easycanvasprints.com, fordi de havde gode priser og en åben ryg. Den tykkere 1,5 "ramme var perfekt og gav mig meget plads til at bøje de fiberoptiske tråde. Derudover vil du have et billede, der giver dig 3" x 8 "brugbar plads til batteripakken og mikrokontroller og LED -strips
  • LED strip lys - jeg brugte adresserbare WS2812 LED strips. Bliv ikke skræmt, de er virkelig nemme at bruge med FastLED- eller Neopixel -bibliotekerne! Du kan også bruge en hvilken som helst standard LED -strimmel, du vil bare ikke kunne styre hvert lysafsnit individuelt uden meget mere ledninger.
  • Mikrocontroller - Jeg brugte en Arduino Uno, men du kan bruge næsten alt til dette projekt.
  • Batteripakke - jeg bestilte denne fra eBay (fra Kina), og den havde titlen "6 x 1,5V AA 2A CELL Batteriholder"
  • Fiberoptiske tråde - endnu en gang bestilt fra Kina på eBay - "PMMA Plastic Fiber Optic Cable End Grow Grow Light DIY DIY Decor" eller "PMMA End Glow Fiber Optic Cable for Star Ceiling Light Kit". Jeg brugte størrelser 1 mm og 1,5 mm, jeg anbefaler faktisk at bruge mindre end det.
  • Tænd/sluk -switch - "SPDT On/On 2 Position Miniature Toggle Switches"
  • Trådorganisationsklip - Disse hjælper med at holde de fiberoptiske tråde pæne og ryddelige.
  • Skumplade, solid core konnektortråd, varmekrympeslange

Værktøjer

  • Dremel - bruges til at rede tænd/sluk -kontakten i billedrammen. Dette kan måske opnås med en boremaskine og en virkelig stor smule, men jeg anbefaler det ikke.
  • Loddejern - fastgørelse af ledninger til LED -strimlen
  • Varm limpistol - bogstaveligt talt hvert trin i dette projekt
  • Stor synål - til at stikke huller gennem lærredet og skumbræt til lysene

Trin 1: Skumplade, batteripakke og tænd/sluk -kontakt

Skumplade, batteripakke og tænd/sluk -kontakt
Skumplade, batteripakke og tænd/sluk -kontakt
Skumplade, batteripakke og tænd/sluk -kontakt
Skumplade, batteripakke og tænd/sluk -kontakt

Før alt andet skal du vedhæfte et stykke skumplade på bagsiden af lærredstrykket. Dette giver os en flot solid overflade at fastgøre alt andet til og hjælper med at holde de fiberoptiske tråde på plads. Brug bare en exacto -kniv eller kassefræser til at skære et stykke skumbræt i den rigtige størrelse og varmlim det ind mange steder. Jeg anbefaler at bruge sort skumplade, så det ikke tillader så meget lys at bløde igennem.

Jeg brugte dremel -boret, der ligner et normalt bor, men som faktisk er fantastisk til at fjerne materiale. Det er en af de bits, der bør komme med enhver dremel. Brug en dåse trykluft til at slippe af med savsmuld fra dremel.

Varm lim alt på plads. Sørg for, at batteripakken er fastgjort meget godt, fordi det kræver en god del kraft at isætte/fjerne et batteri, og du ikke vil have, at batteriholderen skal gå nogen steder.

Trin 2: Mikrocontroller og kredsløb

Mikrocontroller og kredsløb
Mikrocontroller og kredsløb
Mikrocontroller og kredsløb
Mikrocontroller og kredsløb
Mikrocontroller og kredsløb
Mikrocontroller og kredsløb

Jeg satte afbryderen foran Arduino UNO, så når du skifter kontakten, bruger ingenting strøm fra batteripakkerne. Dette skal hjælpe batterierne med at holde så længe som muligt, når projektet ikke er tændt. Arduino -tavler er notorisk dårlige til strømstyring - de bruger meget strøm, hvis de er tændt, selvom de ikke aktivt gør noget.

Tilslut den positive ende af batteripakken til VIN (spændingsindgang) på mikrokontrolleren, så den bruger controllerens indbyggede spændingsregulator til at få spændingen ned til den 5V, den har brug for. Hvis vi drev flere lys, skulle vi muligvis bruge vores egen spændingsregulator til dem, men UNO burde kunne håndtere 5 lysdioder.

Jeg brugte en modstand mellem dataudgangen og LED -strimlen til at udjævne signalet - uden modstanden kan du få tilfældige blinkende pixels. Modstandens størrelse betyder ikke rigtig noget, noget mellem 50Ω og 400Ω burde fungere.

Trin 3: Fiberoptiske lys

Image
Image
Fiberoptiske lys
Fiberoptiske lys
Fiberoptiske lys
Fiberoptiske lys

Efter nogle forsøg og fejl fandt jeg til sidst en god måde at få de fiberoptiske tråde gennem lærredet.

  1. Brug den største synål, du har til at stikke et hul gennem forsiden af lærredet og skumpladen. Jeg anbefaler at stikke hvert hul, du vil i starten, så du kan vende det om og se, hvor du kan/ikke kan placere dine kabelorganisationsklip
  2. Tag en nåletang og tag fat i den fiberoptiske streng mindre end en centimeter fra enden
  3. Stik den fiberoptiske streng gennem hullet, du lavede med en nål
  4. Før tråden gennem forskellige plastikclips, hvor den er lidt længere end nødvendigt - vi klipper den senere
  5. Med din varme limpistol på indstillingen LAV temperatur (hvis den har denne mulighed), skal du lægge en dråbe varm lim på den fiberoptiske streng, hvor den stikker gennem skumpladen. Alternativt kan du bruge de blå klæbrige ting. Den varme lim deformerer strengen en lille smule, men det ser ikke ud til at rode med de optiske kvaliteter for meget
  6. Skær tråden lidt væk fra lærredet ved hjælp af trådskærere.

For at fremskynde processen kan du stikke igennem mange fibre i træk, før du laver den varme lim. De bør generelt forblive på plads alene.

Vær forsigtig med ikke at bryde eller klemme de fiberoptiske tråde på bordet - de går i stykker, og hvis det gør tråden for kort, bliver du ked af det og skal gøre det igen. Brug batteripakken som en modvægt, så du kan have billedrammen mindre end halvdelen på skrivebordet.

Fordi jeg brugte hvidt skumplade i stedet for sort, var der meget lys, der skinner igennem, når lysdioderne var tændt. Som en løsning tapede jeg lidt aluminiumsfolie ind mellem lysene og lærredet.

Brug varmekrympeslange til at holde hvert bundt af fiberoptiske tråde sammen.

  1. Klip trådene til bundtet til omtrent samme længde
  2. Sæt sektionen gennem varmekrympeslange
  3. Brug en varmepistol eller loddejern til at krympe den. Hvis du bruger et loddejern, skal du bare lade siden af strygejernet let røre ved slangen, så krymper det. Det bør ikke smelte slangen, fordi den er designet til lidt varme.

Til sidst brugte jeg varm lim til at fastgøre enden af bundtet til hvert LED -lys. Jeg brugte meget varm lim, så fibrene faktisk fik lys fra hver rød/grøn/blå diode i lyset - når fibrene er virkelig tæt på lyset en "hvid" farve (som faktisk er rød og grøn og blå) så vil nogle fibre bare være røde, og nogle vil være grønne, i stedet for at alle er hvide. Dette kunne forbedres ved at bruge et stykke papir eller noget andet til at sprede det, men varm lim fungerede godt nok for mig.

Trin 4: Programmering

I programmeringen brugte jeg tre biblioteker

FastLED - et fantastisk bibliotek til styring af WS2812 LED -strips (og mange andre adresserbare LED -strips) -

Arduino Low Power - Jeg ved ikke, hvor meget strøm dette faktisk sparer, men det var super let at implementere og skulle hjælpe med at spare en lille smule strøm på funktionen, der bare er hvidt lys og derefter forsinkes for evigt.

EEPROM - Bruges til at læse/gemme projektets aktuelle tilstand. Dette gør det muligt for projektet at øge farvetilstanden hver gang du slukker og tænder det igen, hvilket eliminerer behovet for en separat knap for at ændre tilstanden. EEPROM -biblioteket installeres, når du installerer Arduino IDE.

Jeg brugte også en skitse til at blinke lysene, som en anden satte op. Det lyser tilfældigt op en pixel fra en basisfarve til en spidsfarve og derefter ned igen. https://gist.github.com/kriegsman/88954aae22b03a66… (den bruger også FastLED -biblioteket)

Jeg brugte også vMicro -plugin til Visual Studio - dette er en forstærket version af Arduino IDE. Den har masser af nyttige autofuldførelsesfunktioner og fremhæver problemer i din kode uden at skulle kompilere den. Det koster $ 15, men det er det hele værd, hvis du skal lave mere end et Arduino -projekt, og det tvinger dig til at lære om Visual Studio, som er et super kraftfuldt program.

(Jeg vedhæfter også koden.ino -fil, fordi Instructable hosting af en Github Gist ødelægger mange af de tomme mellemrum i filen)

Arduino -koden kører 4 farvetilstande på en Arduino UNO til nogle WS2812B LED -striplys ved hjælp af FastLED -biblioteket

#omfatte
#omfatte
#omfatte
// FastLED -opsætning
#definereNUM_LEDS4
#definePIN3 // Datapind til LED -strip
CRGB -lysdioder [NUM_LEDS];
// Twinkle opsætning
#defineBASE_COLORCRGB (2, 2, 2) // Grundlæggende baggrundsfarve
#definePEAK_COLORCRGB (255, 255, 255) // Spidsfarve til at blinke op til
// Beløb for at øge farven med hver sløjfe, når den bliver lysere:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Beløb for at reducere farven med hver sløjfe, når den bliver svagere:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Mulighed for at hver pixel begynder at lyse op.
// 1 eller 2 = et par lysende pixels ad gangen.
// 10 = masser af pixels, der lysner ad gangen.
#definereCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Forsinkelseshastighed for blinkende
byte adresse = 35; // Adresse til lagring af kørselstilstand
voidsetup ()
{
FastLED.addLeds (leds, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Få tilstanden til at køre
runMode = EEPROM.read (adresse);
// Forøg runmode med 1
EEPROM.write (adresse, runMode + 1);
}
voidloop ()
{
switch (runMode)
{
// Solid hvid
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
pause;
// Twinkle lidt langsomt
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
pause;
// Glitrer hurtigt
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
pause;
//Regnbue
case4:
RunRainbow ();
pause;
// Indeksér uden for område, nulstil det til 2, og kør derefter tilstand 1.
// Når arduino genstarter, kører den tilstand 2, men i øjeblikket kører tilstand 1
Standard:
EEPROM.write (adresse, 2);
runMode = 1;
pause;
}
}
voidRunRainbow ()
{
byte *c;
uint16_t i, j;
mens (sandt)
{
for (j = 0; j <256; j ++) {// 1 cyklus med alle farver på hjulet
for (i = 0; i <NUM_LEDS; i ++) {
c = Hjul (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
forsinkelse (globalDelay);
}
}
}
byte * Wheel (byte WheelPos) {
statisk byte c [3];
hvis (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
andet {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
returnere c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
mens (sandt)
{
for (uint16_t i = 0; i <NUM_LEDS; i ++) {
hvis (PixelState == SteadyDim) {
// denne pixel er i øjeblikket: SteadyDim
// så vi overvejer tilfældigt at få det til at blive lysere
hvis (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// denne pixel er i øjeblikket: GettingBrighter
// så hvis det er i topfarve, skal du skifte til at blive svagere igen
hvis (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
andet {
// ellers skal du bare blive ved med at gøre det lysere:
leds += DELTA_COLOR_UP;
}
}
ellers {// bliver svagere igen
// denne pixel er i øjeblikket: GettingDimmerAgain
// så hvis det er tilbage til grundfarven, skal du skifte til konstant dæmpning
hvis (leds <= BASE_COLOR) {
leds = BASE_COLOR; // nulstil til nøjagtig grundfarve, hvis vi overskred
PixelState = SteadyDim;
}
andet {
// ellers skal du bare blive ved med at dæmpe det:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // initialiser alle pixels til SteadyDim.
fill_solid (leds, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
mens (sandt)
{
forsinkelse (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte rød, byte grøn, byte blå) {
// FastLED
leds [Pixel].r = rød;
lysdioder [Pixel].g = grøn;
lysdioder [Pixel].b = blå;
}

se rawFiberOptic_ClemsonPic.ino hostet af ❤ af GitHub

Trin 5: Slutprodukt

Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt

Ta-da! Jeg håber, at denne instruktør inspirerer en anden til at lave deres eget lignende projekt. Det var virkelig ikke svært at gøre, og jeg var overrasket over, at ingen havde gjort det og skrevet en grundig instruerbar om det endnu.

Anbefalede: