Sisukord:

Kiudoptilised tuled lõuenditrükis: 5 sammu
Kiudoptilised tuled lõuenditrükis: 5 sammu

Video: Kiudoptilised tuled lõuenditrükis: 5 sammu

Video: Kiudoptilised tuled lõuenditrükis: 5 sammu
Video: Отзыв о системе bnMap.pro. Российская гильдия управляющих и девелоперов 2024, Juuli
Anonim
Image
Image
Kiudoptilised tuled lõuenditrükis
Kiudoptilised tuled lõuenditrükis

See projekt lisab ainulaadse keerutuse tavalisele lõuendiprindile. Programmeerisin neljas erinevas valgustusrežiimis, kuid saate hõlpsalt lisada rohkem. Režiimi muudetakse iga kord, kui selle välja ja uuesti sisse lülitate, selle asemel, et kasutada raami kahjustuste minimeerimiseks eraldi nuppu. Patareid peaksid vastu pidama 50+ tundi - ma pole päris kindel, aga tegin sarnase projekti sõbrale ja see kasutas 5 korda rohkem tulesid ning on ühe patareikomplektiga vastu pidanud 20+ tundi.

Materjalid

  • Lõuenditrükk toimiva ruumiga - tellisin oma saidilt https://www.easycanvasprints.com, kuna neil olid head hinnad ja avatud tagakülg. Paksem 1,5 -tolline raam oli täiuslik ja andis mulle palju ruumi kiudoptiliste kiudude painutamiseks. Lisaks soovite pilti, mis annab teile 3 x 8 tolli tööpinda aku ja mikrokontrolleri ning LED -ribade jaoks
  • LED -riba tuled - kasutasin adresseeritavaid WS2812 LED -ribasid. Ärge laske end hirmutada, neid on FastLED või Neopixel raamatukogudega tõesti lihtne kasutada! Võite kasutada ka mis tahes tavalist LED -riba, lihtsalt ei saa iga valgusjagu eraldi juhtida ilma palju rohkem juhtmeid.
  • Mikrokontroller - kasutasin Arduino Unot, kuid selle projekti jaoks saate kasutada peaaegu kõike.
  • Aku - tellisin selle eBayst (Hiinast) ja selle pealkiri oli "6 x 1,5 V AA 2A CELL aku patareide hoidja"
  • Kiudoptilised kiud - taaskord Hiinast eBayst tellitud - "PMMA plastkiudoptilise kaabli otsakasv Led Light DIY Decor" või "PMMA End Glow Fiber Optic Cable for Star Ceiling Light Kit". Kasutasin suurusi 1mm ja 1,5mm, tegelikult soovitan kasutada väiksemaid.
  • Sisse/välja lüliti - "SPDT sisse/sisse lülitatud 2 positsiooni miniatuursed lülitid"
  • Traadi korraldusklambrid - need aitavad hoida kiudoptilisi kiude kenad ja korras.
  • Vahtplaat, tahke südamikuga pistikutraat, termokahanevad torud

Tööriistad

  • Dremel - kasutatakse pildiraami sisse/välja lülitamiseks. Seda oleks ehk puuri ja tõeliselt suure puuriga võimalik saavutada, aga ma ei soovita seda.
  • Jootekolb - juhtmete kinnitamine LED -ribale
  • Kuum liimipüstol - sõna otseses mõttes selle projekti iga samm
  • Suur õmblusnõel - aukude läbistamiseks läbi lõuendi ja tulede vahtplaadi

Samm: vahtplaat, aku ja sisse/välja lüliti

Vahtplaat, aku ja sisse/välja lüliti
Vahtplaat, aku ja sisse/välja lüliti
Vahtplaat, aku ja sisse/välja lüliti
Vahtplaat, aku ja sisse/välja lüliti

Enne kõike muud peate lõuendiprindi tagaküljele kinnitama vahtplaadi. See annab meile kena kindla pinna, et kinnitada kõik muu ja aitab hoida kiudoptilisi kiude paigal. Lihtsalt kasutage täppisnuga või karbilõikurit, et lõigata vahtplaadi tükk õige suurusega ja liimida see paljudes kohtades kuumaks. Soovitan kasutada musta vahtplaati, et see ei laseks nii palju valgust läbi voolata.

Kasutasin dremeli otsikut, mis näeb välja nagu tavaline puur, kuid sobib materjali eemaldamiseks suurepäraselt. See on üks bittidest, mis peaks iga dremeliga kaasas olema. Dremeli saepurust vabanemiseks kasutage purk suruõhku.

Kuum liim kõik oma kohale. Veenduge, et aku oleks väga hästi kinnitatud, kuna see nõuab aku sisestamiseks/eemaldamiseks palju jõudu ja te ei soovi, et akuhoidik kuhugi läheks.

Samm: mikrokontroller ja vooluring

Mikrokontroller ja vooluring
Mikrokontroller ja vooluring
Mikrokontroller ja vooluring
Mikrokontroller ja vooluring
Mikrokontroller ja vooluring
Mikrokontroller ja vooluring

Panin toitelüliti Arduino UNO ette, nii et kui lülitit sisse lülitate, ei kasuta miski akude energiat. See peaks aitama akudel võimalikult kaua vastu pidada, kui projekt pole sisse lülitatud. Arduino tahvlid on energiahalduses kurikuulsalt halvad - nad kasutavad palju voolu, kui need on sisse lülitatud, isegi kui nad midagi aktiivselt ei tee.

Ühendage aku positiivne ots mikrokontrolleri VIN-i (pingesisendisse) nii, et see kasutaks kontrolleri sisseehitatud pingeregulaatorit vajaliku 5 V pinge alandamiseks. Kui toitaksime rohkem tulesid, peaksime nende jaoks kasutama oma pingeregulaatorit, kuid UNO peaks suutma hakkama saada viie valgusdioodiga.

Kasutasin signaali silumiseks takistit andmesignaali ja LED -riba vahel - ilma takistuseta võite piksleid juhuslikult vilkuda. Takisti suurus pole tegelikult oluline, kõik, mis jääb vahemikku 50Ω ja 400Ω, peaks töötama.

3. samm: fiiberoptilised tuled

Image
Image
Kiudoptilised tuled
Kiudoptilised tuled
Kiudoptilised tuled
Kiudoptilised tuled

Pärast mõningaid katseid ja vigu leidsin lõpuks hea viisi, kuidas kiudoptilised kiud lõuendilt läbi viia.

  1. Kasutage suurimat õmblusnõela, mille peate lõuendi ja vahtplaadi esiosa sisse torgama. Soovitan kohe alguses kõik soovitud augud sisse lüüa, et saaksite selle ümber pöörata ja näha, kuhu saate/ei saa oma kaabliorganisatsiooni klippe panna
  2. Võtke paar nõelaninaga tangid ja haarake kiudoptilisest kiust otsast vähem kui sentimeetri kaugusel
  3. Torgake kiudoptiline kiud läbi nõelaga tehtud augu
  4. Suunake kiud läbi erinevate plastklambrite sinna, kus see on pisut pikem kui vaja - lõikame selle hiljem
  5. Kui kuumliimipüstol on madalal temperatuuril (kui see võimalus on olemas), pange tilk kuuma liimi kiudoptilisele kihile, kus see torkab läbi vahtplaadi. Teise võimalusena võite kasutada seda sinist kleepuvat kraami. Kuum liim deformeerib kiudu veidi, kuid tundub, et see ei sega liiga palju optilisi omadusi
  6. Lõigake niit traatlõikurite abil lõuendist veidi eemale.

Protsessi kiirendamiseks võite enne kuuma liimi tegemist mitu kiudu järjest läbi torgata. Need peaksid üldjuhul oma kohale jääma.

Olge ettevaatlik, et mitte katkestada ega pigistada laual olevaid kiudoptilisi kiude - need lähevad katki ja kui see muudab kiud liiga lühikeseks, olete kurb ja peate selle uuesti tegema. Kasutage akut vastukaaluna, et pildiraam oleks laual vähem kui pool.

Kuna ma kasutasin musta asemel valget vahtplaati, paistis valgusdioodide sisselülitamisel palju valgust. Paranduseks teipisin tulede ja lõuendi vahele alumiiniumfooliumi.

Kasutage termokahanevaid torusid, et hoida iga kiudoptiliste kiudude kimp koos.

  1. Lõika kimbu jaoks mõeldud kiud umbes sama pikkuseks
  2. Pange sektsioon läbi termokahaneva toru
  3. Selle kokkutõmbamiseks kasutage kuumutuspüstolit või jootekolvi. Kui kasutate jootekolvi, laske triikraua küljel kergelt torusid puudutada ja see kahaneb. See ei tohiks torusid sulatada, sest see on mõeldud väikese kuumuse jaoks.

Lõpuks kasutasin kuuma liimi abil kimbu otsa kinnitamiseks iga LED -tule külge. Ma kasutasin palju kuuma liimi, nii et kiud said tegelikult valguse kätte igast punasest/rohelisest/sinisest dioodist - kui kiud on tõepoolest valguse lähedal, siis "valge" värv (mis on tegelikult punane ja roheline ja sinine) siis on mõned kiud lihtsalt punased ja mõned rohelised, selle asemel, et kõik oleksid valged. Seda saaks parandada, kui kasutada selle levitamiseks paberitükki või midagi muud, kuid kuum liim töötas minu jaoks piisavalt hästi.

4. samm: programmeerimine

Selle programmeerimisel kasutasin kolmikraamatuid

FastLED - suurepärane raamatukogu WS2812 LED -ribade (ja paljude teiste adresseeritavate LED -ribade) juhtimiseks -

Arduino Low Power - ma ei tea, kui palju energiat see tegelikult säästab, kuid seda oli ülilihtne rakendada ja see peaks aitama säästa pisikest energiat selle funktsiooni puhul, mis on lihtsalt valged tuled ja viivitab siis igavesti.

EEPROM - kasutatakse projekti praeguse režiimi lugemiseks/salvestamiseks. See võimaldab projektil värvirežiimi suurendada iga kord, kui selle välja ja uuesti sisse lülitate, mis välistab vajaduse režiimi muutmiseks eraldi nupu järele. EEPROMi teek installitakse alati, kui installite Arduino IDE.

Kasutasin ka visandit tulede vilkumiseks, mille keegi teine seadis. See süttib juhuslikult piksli põhivärvist tippvärvini ja seejärel tagasi. https://gist.github.com/kriegsman/88954aae22b03a66… (see kasutab ka FastLED -i kogu)

Kasutasin ka Visual Studio jaoks vMicro pistikprogrammi - see on Arduino IDE võimendatud versioon. Sellel on palju kasulikke automaatse täitmise funktsioone ja see toob esile teie koodi probleemid ilma seda kompileerimata. See maksab 15 dollarit, kuid on seda väärt, kui kavatsete teha rohkem kui ühe Arduino projekti, ja see sunnib teid tundma õppima Visual Studio kohta, mis on ülivõimas programm.

(Lisan ka koodi.ino faili, sest Githubi Gisti juhitav hostimine hävitab palju faili tühje kohti)

Arduino kood, mis töötab Arduino UNO -s 4 värvirežiimi mõnede WS2812B LED -ribatulede jaoks, kasutades FastLED -i teeki

#kaasake
#kaasake
#kaasake
// FastLED -i seadistamine
#defineNUM_LEDS4
#definePIN3 // Andmepulk LED -riba jaoks
CRGB LED -id [NUM_LEDS];
// Twinkle seadistus
#defineBASE_COLORCRGB (2, 2, 2) // Põhitausta värv
#definePEAK_COLORCRGB (255, 255, 255) // Värvi tippvärv kuni
// Summa värvi suurendamiseks iga silmuse võrra heledamaks muutudes:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Summa värvi vähendamiseks iga silmuse võrra, kui see muutub hämaraks:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Võimalus, et iga piksel hakkab heledamaks muutuma.
// 1 või 2 = paar helendavat pikslit korraga.
// 10 = palju piksleid heledamaks korraga.
#defineCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
bait runMode;
bait globalBright = 150;
bait globalDelay = 20; // Viivituskiirus vilkumise jaoks
baidi aadress = 35; // Käitusrežiimi salvestamise aadress
voidsetup ()
{
FastLED.addLeds (ledid, NUM_LEDS);
FastLED.setCorrection (tüüpilineLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Hangi režiim käivitamiseks
runMode = EEPROM.read (aadress);
// Suurendage töörežiimi 1 võrra
EEPROM.write (aadress, runMode + 1);
}
tühjus ()
{
lüliti (runMode)
{
// Tahke valge
case1: fill_solid (ledid, NUM_LEDS, CRGB:: valge);
FastLED.show ();
DelayForever ();
murda;
// Vilgub aeglaselt
juhtum2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
murda;
// Kiirelt särama
juhtum3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
murda;
// Vikerkaar
juhtum 4:
RunRainbow ();
murda;
// Indeks vahemikust väljas, lähtestage see 2 -le ja seejärel käivitage režiim 1.
// Kui arduino taaskäivitub, käivitab see režiimi 2, kuid praegu käivitage režiimi 1
vaikimisi:
EEPROM.write (aadress, 2);
runMode = 1;
murda;
}
}
voidRunRainbow ()
{
bait *c;
uint16_t i, j;
samas (tõsi)
{
(j = 0; j <256; j ++) {// 1 ratta kõigi värvide tsükkel
jaoks (i = 0; i <NUM_LEDS; i ++) {
c = Ratas ((((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
viivitus (globalDelay);
}
}
}
bait * ratas (bait WheelPos) {
staatiline bait c [3];
kui (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;
}
muu {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
tagasitulek c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
samas (tõsi)
{
jaoks (uint16_t i = 0; i <NUM_LEDS; i ++) {
kui (PixelState == SteadyDim) {
// see piksel on praegu: SteadyDim
// seega kaalume juhuslikult heledamaks muutmist
kui (juhuslik8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// need pikslid on praegu: GettingBrighter
// nii et kui see on tippvärviga, lülitage see uuesti hämaramaks
kui (ledid > = PEAK_COLOR) {
PixelState = GimDimmerAgain;
}
muu {
// muidu heledamaks muudkui:
ledid += DELTA_COLOR_UP;
}
}
muidu {// läheb jälle tuhmimaks
// need pikslid on praegu: GettingDimmerAgain
// nii et kui see on tagasi põhivärvi, lülitage see püsivalt hämaraks
kui (ledid <= BASE_COLOR) {
ledid = BASE_COLOR; // lähtestamine täpsele põhivärvile, juhuks, kui pildistame üle
PixelState = PüsivDim;
}
muu {
// muidu hämardage seda lihtsalt:
ledid -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // initsialiseeri kõik pikslid SteadyDim -i.
fill_solid (ledid, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
samas (tõsi)
{
viivitus (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int piksel, bait punane, bait roheline, bait sinine) {
// FastLED
ledid [Pixel].r = punane;
LEDid [Pixel].g = roheline;
ledid [Pixel].b = sinine;
}

vaata rawFiberOptic_ClemsonPic.ino, mille hostiks on GitHub ❤

Samm: lõpptoode

Lõpptoode
Lõpptoode
Lõpptoode
Lõpptoode
Lõpptoode
Lõpptoode

Ta-da! Loodan, et see juhendatav inspireerib kedagi teist oma sarnast projekti tegema. Seda polnud tõesti raske teha ja olin üllatunud, et keegi pole seda teinud ja selle kohta veel põhjaliku juhendi kirjutanud.

Soovitan: