INHOUDSOPGAWE:

Vesel-optiese ligte in doekafdruk: 5 stappe
Vesel-optiese ligte in doekafdruk: 5 stappe

Video: Vesel-optiese ligte in doekafdruk: 5 stappe

Video: Vesel-optiese ligte in doekafdruk: 5 stappe
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, Julie
Anonim
Image
Image
Vesel-optiese ligte in doekafdruk
Vesel-optiese ligte in doekafdruk

Hierdie projek gee 'n unieke draai aan 'n standaard doekafdruk. Ek het in 4 verskillende beligtingsmodusse geprogrammeer, maar u kan maklik meer byvoeg. Die modus word verander elke keer as u dit aan- en uitskakel in plaas van 'n aparte knoppie om die raam skade te verminder. Die batterye behoort meer as 50 uur se gebruik te hou - ek is nie regtig seker nie, maar ek het 'n soortgelyke projek vir 'n vriend gemaak en dit het meer as 5 keer soveel ligte gebruik en meer as 20 uur op 'n enkele stel batterye geduur.

Materiaal

  • Seilafdruk met werkbare ruimte - ek het myne by https://www.easycanvasprints.com bestel omdat hulle goeie pryse en 'n oop rug gehad het. Die dikker raam van 1,5 "was perfek en het my baie ruimte gegee om die veseloptiese drade te buig. Boonop wil u 'n prentjie hê wat u 3" by 8 "werkbare ruimte bied vir die battery en mikrobeheerder en LED -stroke
  • LED -strookligte - ek het adresbare WS2812 LED -stroke gebruik. Moenie geïntimideer word nie, dit is baie maklik om te gebruik met die FastLED- of Neopixel -biblioteke! U kan ook enige standaard LED -strook gebruik; u kan nie elke liggedeelte afsonderlik beheer sonder baie meer bedrading nie.
  • Mikrokontroleerder - ek het 'n Arduino Uno gebruik, maar u kan omtrent alles vir hierdie projek gebruik.
  • Batterypak - ek het hierdie by eBay (uit China) bestel en dit was getiteld "6 x 1.5V AA 2A CELL Battery Battery Holder"
  • Optiese veselstringe - weereens bestel uit China op eBay - "PMMA Plastic Fiber Optic Cable End Grow Led Light DIY Decor" of "PMMA End Glow Fiber Optic Cable for Star Ceiling Light Kit". Ek het groottes 1 mm en 1,5 mm gebruik, ek beveel eintlik aan om kleiner as dit te gebruik.
  • Aan/uit skakelaar - "SPDT aan/aan 2 -posisie miniatuur skakelaars"
  • Draadorganisasie clips - dit help om die veseloptiese stringe mooi en netjies te hou.
  • Skuimbord, soliede kern -aansluitdraad, krimpbuis

Gereedskap

  • Dremel - gebruik om die aan/uit -skakelaar in die prentraamwerk te maak. Dit kan miskien bereik word met 'n boor en 'n baie groot bietjie, maar ek beveel dit nie aan nie.
  • Soldeerbout - heg drade aan die LED -strook
  • Warm gom geweer - letterlik elke stap van hierdie projek
  • Groot naald - om gate deur die doek te steek en skuimplank vir die ligte

Stap 1: skuimbord, battery en aan/uit -skakelaar

Skuimbord, battery en aan/uit -skakelaar
Skuimbord, battery en aan/uit -skakelaar
Skuimbord, battery en aan/uit -skakelaar
Skuimbord, battery en aan/uit -skakelaar

Voordat u iets anders doen, moet u 'n stuk skuimplank aan die agterkant van die doekafdruk heg. Dit gee ons 'n mooi soliede oppervlak om al die ander dinge aan te heg en help om die veseloptiese drade vas te hou. Gebruik net 'n exacto -mes of 'n doeksnyer om 'n stuk skuimbord in die regte grootte te sny en dit op baie plekke warm te plak. Ek beveel aan dat u swart skuimplank gebruik sodat dit nie deur soveel lig laat vloei nie.

Ek het die dremelboor gebruik wat soos 'n gewone boorpunt lyk, maar eintlik baie goed is om materiaal te verwyder. Dit is een van die stukkies wat by enige dremel behoort te kom. Gebruik 'n blikkie pers lug om ontslae te raak van enige saagsels van die dremel.

Warm gom alles op sy plek. Maak seker dat die battery baie goed aangeheg is, want dit verg 'n bietjie krag om 'n battery te plaas/verwyder en u wil nie hê dat die batteryhouer êrens heen moet gaan nie.

Stap 2: Mikrobeheerder en stroombaan

Mikrobeheerder en stroombaan
Mikrobeheerder en stroombaan
Mikrobeheerder en stroombaan
Mikrobeheerder en stroombaan
Mikrobeheerder en stroombaan
Mikrobeheerder en stroombaan

Ek plaas die aan / uit -skakelaar voor die Arduino UNO, sodat as u die skakelaar aanskakel, niks uit die batterye kom nie. Dit moet help om die batterye so lank as moontlik te hou as die projek nie aangeskakel is nie. Arduino -borde is berug op swak bestuur - hulle gebruik baie stroom as hulle aangeskakel is, selfs al doen hulle niks aktief nie.

Koppel die positiewe kant van die battery in die VIN (spanningsinvoer) van die mikrokontroleerder sodat dit die ingeboude spanningsreguleerder van die kontroleerder gebruik om die spanning na die 5V wat dit benodig, af te bring. As ons meer ligte aandryf, moet ons moontlik ons eie spanningsreguleerder daarvoor gebruik, maar die UNO behoort 5 LED's te kan hanteer.

Ek het 'n weerstand tussen die data -uitset en die LED -strook gebruik om die sein glad te maak - sonder die weerstand kan u willekeurige pixels flits. Die grootte van die weerstand maak nie regtig saak nie; enigiets tussen 50Ω en 400Ω behoort te werk.

Stap 3: Veseloptiese ligte

Image
Image
Optiese vesel ligte
Optiese vesel ligte
Optiese vesel ligte
Optiese vesel ligte

Na 'n bietjie proef en fout het ek uiteindelik 'n goeie manier gevind om die veseloptiese drade deur die doek te kry.

  1. Gebruik die grootste naald om 'n gat deur die voorkant van die doek en skuimplank te steek. Ek beveel aan dat u elke gat wat u wil aan die begin steek, sodat u dit kan omdraai en kyk waar u die kabelorganisasieknipsels kan/nie kan plaas nie
  2. Neem 'n tang met 'n naald en gryp die veseloptiese draad minder as 'n sentimeter van die einde af
  3. Steek die veseloptiese draad deur die gat wat u met 'n naald gemaak het
  4. Lei die draad deur verskillende plastiekklemme tot waar dit effens langer is as wat nodig is - ons sny dit later
  5. Plaas 'n druppel warm gom op die veseloptiese draad waar dit deur die skuimplank steek, met u warm lijmpistool op die lae temperatuur -instelling (as dit die opsie het). Alternatiewelik kan u die blou taai goed gebruik. Die warm gom vervorm die draad 'n bietjie, maar dit lyk nie asof dit te veel met die optiese eienskappe mors nie
  6. Sny die draad 'n bietjie weg van die doek met behulp van draadknipers.

Om die proses te bespoedig, kan u deur baie vesels in 'n ry steek voordat u die warm gom aanbring. Hulle moet oor die algemeen alleen bly.

Wees versigtig om nie die optiese veselstringe op die tafel te breek of te knyp nie - dit breek en as dit die snoer te kort maak, is u hartseer en moet u dit weer doen. Gebruik die battery as 'n teengewig, sodat u die raam minder as die helfte op die lessenaar kan hê.

Omdat ek wit skuimplank gebruik het in plaas van swart, skyn daar baie lig toe die LED's aan was. Ter bevestiging het ek aluminiumfoelie tussen die ligte en die doek vasgemaak.

Gebruik 'n hitte -krimpslang om elke bondel veseloptiese drade bymekaar te hou.

  1. Sny die drade van die bondel ongeveer dieselfde lengte
  2. Plaas die gedeelte deur die krimpbuis
  3. Gebruik 'n hittegeweer of soldeerbout om dit te krimp. As u 'n soldeerbout gebruik, laat die kant van die yster liggies aan die buis raak, dan krimp dit. Dit moet die buis nie smelt nie, want dit is ontwerp vir 'n bietjie hitte.

Uiteindelik het ek warm gom gebruik om die einde van die bondel aan elke LED -lig vas te maak. Ek het baie warm gom gebruik sodat die vesels eintlik lig kry van elke rooi/groen/blou diode in die lig - as die vesels baie naby die lig is, 'n "wit" kleur (wat eintlik rooi en groen en blou is) dan is sommige vesels net rooi en sommige groen, in plaas daarvan dat hulle wit is. Dit kan verbeter word deur 'n stuk papier of iets anders te gebruik om dit te versprei, maar warm gom het goed genoeg vir my gewerk.

Stap 4: Programmering

In die programmering hiervan het ek drie biblioteke gebruik

FastLED - 'n uitstekende biblioteek vir die beheer van WS2812 LED -stroke (en vele ander adresseerbare LED -stroke) -

Arduino Low Power - Ek weet nie hoeveel krag dit eintlik bespaar nie, maar dit was baie maklik om te implementeer en behoort 'n klein bietjie krag te bespaar op die funksie wat net wit ligte is en dan vir ewig te vertraag.

EEPROM - Word gebruik om die huidige modus van die projek te lees/op te slaan. Dit laat die projek toe om die kleurmodus te verhoog elke keer as u dit aan en weer aanskakel, wat die behoefte aan 'n aparte knoppie uitskakel om die modus te verander. Die EEPROM -biblioteek word geïnstalleer wanneer u die Arduino IDE installeer.

Ek het ook 'n skets gebruik om die ligte te laat blink wat iemand anders opgestel het. Dit lig ewekansig 'n pixel van 'n basiskleur na 'n piek kleur en dan terug. https://gist.github.com/kriegsman/88954aae22b03a66… (dit gebruik ook die FastLED -biblioteek)

Ek het ook die vMicro -inprop vir Visual Studio gebruik - dit is 'n versterkte weergawe van die Arduino IDE. Dit bevat baie handige outovoltooi -funksies en beklemtoon probleme in u kode sonder om dit op te stel. Dit kos $ 15, maar dit is die moeite werd as u meer as een Arduino -projek gaan maak, en dit sal u dwing om meer te leer oor Visual Studio, 'n baie kragtige program.

(Ek heg ook die kode.ino -lêer aan omdat die Instructable hosting van 'n Github Gist baie leë spasies in die lêer vernietig)

Die Arduino -kode bevat vier kleurmodusse op 'n Arduino UNO vir 'n paar WS2812B LED -strookligte met behulp van die FastLED -biblioteek

#insluit
#insluit
#insluit
// FastLED -opstelling
#definieerNUM_LEDS4
#definieerPIN3 // Dataspeld vir LED -strook
CRGB -leds [NUM_LEDS];
// Twinkle -opstelling
#defineBASE_COLORCRGB (2, 2, 2) // Basis agtergrondkleur
#definePEAK_COLORCRGB (255, 255, 255) // Piek kleur om te blink
// Bedrae om die kleur met elke lus te verhoog namate dit helderder word:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Bedrag om die kleur met elke lus te verminder namate dit dowwer word:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Die kans dat elke pixel begin opklaar.
// 1 of 2 = 'n paar verhelderende pixels op 'n slag.
// 10 = baie pixels wat op 'n slag helder word.
#definieerCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
byte globalBright = 150;
byte globalDelay = 20; // Vertraag spoed vir flikker
byte adres = 35; // Adres om die uitvoermodus te stoor
voidsetup ()
{
FastLED.addLeds (leds, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Kry die modus om uit te voer
runMode = EEPROM.read (adres);
// Verhoog die run mode met 1
EEPROM.write (adres, runMode + 1);
}
voidloop ()
{
skakelaar (runMode)
{
// Soliede wit
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
breek;
// Knip effens stadig
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
breek;
// Glinster vinnig
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
breek;
// Reënboog
saak 4:
RunRainbow ();
breek;
// Indekseer buite bereik, stel dit terug op 2 en voer dan modus 1 uit.
// As die arduino weer begin, loop dit modus 2, maar werk tans modus 1
verstek:
EEPROM.write (adres, 2);
runMode = 1;
breek;
}
}
voidRunRainbow ()
{
greep *c;
uint16_t i, j;
terwyl (waar)
{
vir (j = 0; j <256; j ++) {// 1 siklus van alle kleure op wiel
vir (i = 0; i <NUM_LEDS; i ++) {
c = wiel (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
vertraging (globalDelay);
}
}
}
byte * wiel (byte WheelPos) {
statiese greep c [3];
as (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;
}
anders {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
terugkeer c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
terwyl (waar)
{
vir (uint16_t i = 0; i <NUM_LEDS; i ++) {
as (PixelState == SteadyDim) {
// hierdie pixels is tans: SteadyDim
// sodat ons dit lukraak oorweeg om dit helderder te laat word
as (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// hierdie pixels is tans: GettingBrighter
// so as dit 'n maksimum kleur het, moet u dit weer dowwer maak
as (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
anders {
// andersins, hou net aan om dit op te helder:
leds += DELTA_COLOR_UP;
}
}
anders {// word dit weer dowwer
// hierdie pixels is tans: GettingDimmerAgain
// as dit terug is na die basiskleur, verander dit na 'n konstante dim
as (leds <= BASE_COLOR) {
leds = BASE_COLOR; // herstel na die presiese basiskleur, as ons oorskiet
PixelState = SteadyDim;
}
anders {
// andersins, hou net aan om dit te verduister:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, grootte van (PixelState), SteadyDim); // initialiseer al die pixels na SteadyDim.
fill_solid (leds, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
terwyl (waar)
{
vertraging (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte rooi, byte groen, byte blou) {
// FastLED
leds [Pixel].r = rooi;
leds [Pixel].g = groen;
leds [Pixel].b = blou;
}

sien rawFiberOptic_ClemsonPic.ino aangebied deur ❤ deur GitHub

Stap 5: Finale produk

Finale produk
Finale produk
Finale produk
Finale produk
Finale produk
Finale produk

Ta-da! Ek hoop dat hierdie instruksies iemand anders inspireer om hul eie soortgelyke projek te maak. Dit was regtig nie moeilik nie, en ek was verbaas dat niemand dit gedoen het nie en het nog 'n deeglike instruksie daaroor geskryf.

Aanbeveel: