Innholdsfortegnelse:

Fiberoptiske lys i lerretstrykk: 5 trinn
Fiberoptiske lys i lerretstrykk: 5 trinn

Video: Fiberoptiske lys i lerretstrykk: 5 trinn

Video: Fiberoptiske lys i lerretstrykk: 5 trinn
Video: Инопланетяне - НЛО - Что, если разоблачители говорят правду?.. 2024, Juli
Anonim
Image
Image
Fiberoptiske lamper i lerret
Fiberoptiske lamper i lerret

Dette prosjektet gir et unikt snurr på et standard lerretstrykk. Jeg programmerte i 4 forskjellige belysningsmoduser, men du kan enkelt legge til flere. Modusen endres hver gang du slår den av og på igjen i stedet for å ha en egen knapp for å minimere skader på rammen. Batteriene skal vare i mer enn 50 timers bruk - jeg er egentlig ikke sikker, men jeg laget et lignende prosjekt for en venn, og den brukte 5 ganger så mange lys og har vart i 20+ timer på et enkelt sett med batterier.

Materialer

  • Lerretstrykk med brukbar plass - jeg bestilte min fra https://www.easycanvasprints.com fordi de hadde gode priser og en åpen rygg. Den tykkere 1,5 "rammen var perfekt og ga meg mye plass til å bøye de fiberoptiske trådene. I tillegg vil du ha et bilde som gir deg 3" x 8 "brukbar plass til batteripakken og mikrokontrolleren og LED -strips
  • LED -stripelys - jeg brukte adresserbare WS2812 LED -strips. Ikke bli skremt, de er veldig enkle å bruke med FastLED- eller Neopixel -bibliotekene! Du kan også bruke hvilken som helst standard LED -stripe, du vil bare ikke kunne kontrollere hver lysdel individuelt uten mye mer ledninger.
  • Mikrokontroller - Jeg brukte en Arduino Uno, men du kan bruke omtrent alt til dette prosjektet.
  • Batteripakke - Jeg bestilte denne fra eBay (fra Kina) og den fikk tittelen "6 x 1,5V AA 2A CELL Batteriholder"
  • Fiberoptiske tråder - nok 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 brukte størrelser 1 mm og 1,5 mm, jeg anbefaler faktisk å bruke mindre enn det.
  • Av/på -bryter - "SPDT På/På 2 -posisjon miniatyrbrytere"
  • Trådorganisasjonsklipp - Disse bidrar til å holde de fiberoptiske trådene fine og ryddige.
  • Skumplate, solid kjernekoblingstråd, krympeslange

Verktøy

  • Dremel - pleide å hekke av/på -bryteren i bilderammen. Dette kan kanskje oppnås med en drill og en veldig stor bit, men jeg anbefaler ikke det.
  • Loddejern - feste ledninger til LED -stripen
  • Varm limpistol - bokstavelig talt hvert trinn i dette prosjektet
  • Stor synål - for å stikke hull gjennom lerretet og skumbrett for lysene

Trinn 1: Skumplate, batteripakke og av/på -bryter

Skumplate, batteripakke og av/på -bryter
Skumplate, batteripakke og av/på -bryter
Skumplate, batteripakke og av/på -bryter
Skumplate, batteripakke og av/på -bryter

Før alt annet må du feste et stykke skumbrett på baksiden av lerretstrykket. Dette gir oss en fin solid overflate å feste alt annet på og hjelper til med å holde de fiberoptiske trådene på plass. Bare bruk en exacto -kniv eller eskkutter for å kutte et stykke skumbrett til riktig størrelse og lim det inn mange steder. Jeg anbefaler å bruke svart skumplate slik at det ikke tillater så mye lys å blø gjennom.

Jeg brukte dremel -borkronen som ser ut som en vanlig borkrone, men er faktisk flott for å fjerne materiale. Det er en av bitene som bør komme med enhver dremel. Bruk en boks med trykkluft for å kvitte deg med sagflis fra dremelen.

Varm lim alt på plass. Sørg for at batteripakken er godt festet fordi det krever en god del kraft å sette inn/fjerne et batteri og du ikke vil at batteriholderen skal gå noen steder.

Trinn 2: Mikrokontroller og krets

Mikrokontroller og krets
Mikrokontroller og krets
Mikrokontroller og krets
Mikrokontroller og krets
Mikrokontroller og krets
Mikrokontroller og krets

Jeg satte strømbryteren foran Arduino UNO slik at når du bytter bryteren, bruker ingenting strøm fra batteriene. Dette skal hjelpe batteriene til å vare så lenge som mulig når prosjektet ikke er slått på. Arduino -plater er notorisk dårlige til strømstyring - de bruker mye strøm hvis de er slått på, selv om de ikke aktivt gjør noe.

Koble den positive enden av batteripakken til VIN (spenningsinngang) på mikrokontrolleren slik at den bruker kontrollerens innebygde spenningsregulator for å få spenningen ned til 5V den trenger. Hvis vi drev flere lys, måtte vi kanskje bruke vår egen spenningsregulator for dem, men UNO burde kunne håndtere 5 lysdioder.

Jeg brukte en motstand mellom datautgangen og LED -stripen for å jevne ut signalet - uten motstanden kan du få tilfeldig blinking av piksler. Størrelsen på motstanden spiller egentlig ingen rolle, alt mellom 50Ω og 400Ω burde fungere.

Trinn 3: Fiberoptiske lys

Image
Image
Fiberoptiske lys
Fiberoptiske lys
Fiberoptiske lys
Fiberoptiske lys

Etter litt prøving og feiling fant jeg til slutt en god måte å få de fiberoptiske trådene gjennom lerretet.

  1. Bruk den største synålen du trenger til å stikke hull gjennom forsiden av lerretet og skumplaten. Jeg anbefaler å stikke hvert hull du vil helt i begynnelsen, slik at du kan snu det og se hvor du kan/ikke kan sette kabelorganisasjonsklippene dine
  2. Ta en nåletang og ta fiberoptisk streng mindre enn en centimeter fra enden
  3. Stikk den fiberoptiske tråden gjennom hullet du laget med en nål
  4. Før tråden gjennom forskjellige plastklips til den er litt lengre enn nødvendig - vi klipper den senere
  5. Med den varme limpistolen din på LAV temperaturinnstilling (hvis den har det alternativet), legg en dråpe varmt lim på fiberoptisk tråd der den stikker gjennom skumplaten. Alternativt kan du bruke de blå klebrig tingene. Det varme limet deformerer tråden litt, men det ser ikke ut til å rote for mye med de optiske egenskapene
  6. Klipp tråden litt bort fra lerretet ved hjelp av trådkuttere.

For å fremskynde prosessen kan du stikke gjennom mange fibre på rad før du gjør det varme limet. De bør vanligvis forbli på plass alene.

Vær forsiktig så du ikke knuser eller klemmer fiberoptiske trådene på bordet - de går i stykker, og hvis det gjør tråden for kort, blir du trist og må gjøre den om. Bruk batteripakken som en motvekt, slik at du kan ha bilderammen mindre enn halvparten på skrivebordet.

Fordi jeg brukte hvitt skumbrett i stedet for svart, var det mye lys som skinner gjennom når lysdiodene var på. Som en løsning tapet jeg inn litt aluminiumsfolie mellom lysene og lerretet.

Bruk varmekrympeslanger for å holde hver bunt fiberoptiske tråder sammen.

  1. Klipp trådene for bunten til omtrent samme lengde
  2. Sett delen gjennom varmekrympeslange
  3. Bruk en varmepistol eller loddejern for å krympe den. Hvis du bruker et loddejern, lar du siden av strykejernet lett berøre slangen, så krymper det. Det bør ikke smelte slangen fordi den er designet for litt varme.

Etter hvert brukte jeg varmt lim for å feste enden av bunten til hvert LED -lys. Jeg brukte mye varmt lim slik at fibrene faktisk fikk lys fra hver rød/grønn/blå diode i lyset - når fibrene er veldig nær lyset en "hvit" farge (som faktisk er rød og grønn og blå) da vil noen fibre bare være røde og noen vil være grønne, i stedet for at alle er hvite. Dette kan forbedres ved å bruke et stykke papir eller noe annet for å spre det, men varmt lim fungerte bra nok for meg.

Trinn 4: Programmering

I programmeringen brukte jeg tre biblioteker

FastLED - et flott bibliotek for å kontrollere WS2812 LED -strips (og mange andre adresserbare LED -strips) -

Arduino Low Power - Jeg vet ikke hvor mye strøm dette faktisk sparer, men det var superenkelt å implementere og burde bidra til å spare litt strøm på funksjonen som bare er hvitt lys og deretter forsinkes for alltid.

EEPROM - Brukes til å lese/lagre gjeldende modus for prosjektet. Dette gjør at prosjektet kan øke fargemodus hver gang du slår den av og på igjen, noe som eliminerer behovet for en separat knapp for å endre modus. EEPROM -biblioteket installeres når du installerer Arduino IDE.

Jeg brukte også en skisse for å blinke lysene som noen andre satte opp. Den lyser tilfeldig opp en piksel fra en grunnfarge til en toppfarge og deretter ned igjen. https://gist.github.com/kriegsman/88954aae22b03a66… (den bruker også FastLED -biblioteket)

Jeg brukte også vMicro -plugin for Visual Studio - dette er en forsterket versjon av Arduino IDE. Den har massevis av nyttige autofullføringsfunksjoner og fremhever problemer i koden din uten å måtte kompilere den. Det koster $ 15, men det er så verdt det hvis du skal lage mer enn ett Arduino -prosjekt, og det vil tvinge deg til å lære om Visual Studio som er et super kraftig program.

(Jeg legger også ved koden.ino -fil fordi Instructable hosting av en Github Gist ødelegger mange av de tomme plassene i filen)

Arduino -koden kjører 4 fargemoduser på en Arduino UNO for noen WS2812B LED -stripelys ved bruk av FastLED -biblioteket

#inkludere
#inkludere
#inkludere
// FastLED -oppsett
#definereNUM_LEDS4
#definePIN3 // Datapinne for LED -stripe
CRGB -lysdioder [NUM_LEDS];
// Twinkle -oppsett
#defineBASE_COLORCRGB (2, 2, 2) // Grunnleggende bakgrunnsfarge
#definePEAK_COLORCRGB (255, 255, 255) // Toppfarge å blinke opp til
// Beløp for å øke fargen med hver sløyfe etter hvert som den blir lysere:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Mengde for å redusere fargen med hver sløyfe når den blir svakere:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Sjansen for at hver piksel begynner å lyse opp.
// 1 eller 2 = noen lysende piksler om gangen.
// 10 = mange piksler som lysner om gangen.
#definereCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Forsinkelseshastighet for blinkende
byte adresse = 35; // Adresse for lagring av kjøremodus
voidsetup ()
{
FastLED.addLeds (leds, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Få modusen til å kjøre
runMode = EEPROM.read (adresse);
// Øk kjøremodus med 1
EEPROM.write (adresse, runMode + 1);
}
voidloop ()
{
switch (runMode)
{
// Solid hvit
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
gå i stykker;
// Twinkle ganske sakte
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
gå i stykker;
// Blinker raskt
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
gå i stykker;
//Regnbue
case4:
RunRainbow ();
gå i stykker;
// Indekser utenfor rekkevidde, tilbakestill den til 2 og kjør deretter modus 1.
// Når arduinoen starter på nytt, kjører den modus 2, men foreløpig kjører modus 1
misligholde:
EEPROM.write (adresse, 2);
runMode = 1;
gå i stykker;
}
}
voidRunRainbow ()
{
byte *c;
uint16_t i, j;
mens (sant)
{
for (j = 0; j <256; j ++) {// 1 syklus med alle farger 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;
}
annet {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
returnere c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
mens (sant)
{
for (uint16_t i = 0; i <NUM_LEDS; i ++) {
hvis (PixelState == SteadyDim) {
// denne pikslen er for tiden: SteadyDim
// så vi vurderer tilfeldig at det begynner å bli lysere
hvis (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// denne pikslen er for øyeblikket: GettingBrighter
// så hvis den er i toppfarge, bytt den til å bli svakere igjen
hvis (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
annet {
// ellers bare fortsett å lysne den:
leds += DELTA_COLOR_UP;
}
}
ellers {// blir svakere igjen
// denne pikslen er for øyeblikket: GettingDimmerAgain
// så hvis den er tilbake til grunnfargen, bytt den til jevn svakhet
hvis (leds <= BASE_COLOR) {
leds = BASE_COLOR; // tilbakestill til eksakt grunnfarge, i tilfelle vi overskred
PixelState = SteadyDim;
}
annet {
// ellers bare fortsett å dempe det:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // initialiser alle pikslene til SteadyDim.
fill_solid (leds, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
mens (sant)
{
forsinkelse (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte rød, byte grønn, byte blå) {
// FastLED
lysdioder [Pixel].r = rød;
lysdioder [Pixel].g = grønn;
lysdioder [Pixel].b = blå;
}

se rawFiberOptic_ClemsonPic.ino hostet av ❤ av GitHub

Trinn 5: Sluttprodukt

Sluttprodukt
Sluttprodukt
Sluttprodukt
Sluttprodukt
Sluttprodukt
Sluttprodukt

Ta-da! Jeg håper denne instruksjonsboken inspirerer noen andre til å lage sitt eget lignende prosjekt. Det var virkelig ikke vanskelig å gjøre, og jeg ble overrasket over at ingen hadde gjort det og skrevet en grundig instruks om det ennå.

Anbefalt: