Kazalo:

Optične luči v platnu: 5 korakov
Optične luči v platnu: 5 korakov

Video: Optične luči v platnu: 5 korakov

Video: Optične luči v platnu: 5 korakov
Video: Что будет, если УКУСИТ КЛЕЩ? Как КУСАЕТ КЛЕЩ? 5 Способов Вытащить Клеща 2024, November
Anonim
Image
Image
Optično-optične luči v tisku na platnu
Optično-optične luči v tisku na platnu

Ta projekt doda edinstven spin na standardnem platnu. Programiral sem v 4 različnih načinih osvetlitve, vendar bi lahko preprosto dodali še več. Način se spremeni vsakič, ko ga izklopite in znova vklopite, namesto da bi imeli ločen gumb za zmanjšanje poškodb okvirja. Baterije bi morale zdržati več kot 50 ur uporabe - nisem prepričan, vendar sem podoben projekt naredil za prijatelja, ki je porabil 5x toliko luči in je zdržal 20+ ur na enem kompletu baterij.

Materiali

  • Tisk na platnu z uporabnim prostorom - svojega sem naročil na https://www.easycanvasprints.com, ker so imele dobre cene in odprt hrbet. Debelejši 1,5 -palčni okvir je bil popoln in mi je dal veliko prostora za upogibanje optičnih vlaken. Poleg tega želite sliko, ki vam daje 3 "do 8" delovnega prostora za baterijo in mikrokrmilnik ter LED trakove
  • Luči LED trakov - Uporabil sem naslovljive LED trakove WS2812. Naj vas ne ustraši, saj so zelo enostavni za uporabo s knjižnicami FastLED ali Neopixel! Uporabite lahko tudi katerikoli standardni LED trak, preprosto ne boste mogli nadzorovati vsakega odseka svetlobe posebej brez veliko ožičenja.
  • Mikrokrmilnik - uporabil sem Arduino Uno, vendar lahko za ta projekt uporabite skoraj vse.
  • Baterija - To sem naročil pri eBayu (iz Kitajske) z naslovom "Držalo za baterije 6 x 1,5 V AA 2A CELL"
  • Optični prameni - še enkrat naročeni s Kitajske na eBayu - "PMMA plastični optični kabel z rastočo LED lučjo" Uporabil sem velikosti 1 mm in 1,5 mm, dejansko priporočam uporabo manjših.
  • Stikalo za vklop/izklop - "Miniaturna stikala za vklop/izklop SPDT 2/2"
  • Posnetki za organizacijo žice - ti pripomorejo k temu, da so prameni optičnih vlaken lepi in urejeni.
  • Plošča iz pene, žica s polnim jedrom, toplotno skrčljiva cev

Orodja

  • Dremel - uporablja se za vstavljanje stikala za vklop/izklop v okvirju slike. To bi morda lahko dosegli z vajo in res veliko, vendar tega ne priporočam.
  • Spajkalnik - pritrditev žic na LED trak
  • Pištola za vroče lepilo - dobesedno vsak korak tega projekta
  • Velika šivalna igla - za luknjanje skozi platno in penasto ploščo za luči

1. korak: Penasta plošča, akumulator in stikalo za vklop/izklop

Plošča iz pene, akumulator in stikalo za vklop/izklop
Plošča iz pene, akumulator in stikalo za vklop/izklop
Plošča iz pene, akumulator in stikalo za vklop/izklop
Plošča iz pene, akumulator in stikalo za vklop/izklop

Preden karkoli drugega, morate na zadnjo stran platna pritrditi kos pene. To nam daje lepo trdno površino, na katero lahko pritrdimo vse ostalo, in pomaga držati vlakne optičnih vlaken na mestu. Samo z natančnim nožem ali rezalnikom za škatle izrežite kos penaste plošče prave velikosti in ga vroče prilepite na veliko mest. Priporočam uporabo črne pene, tako da ne dovoljuje pretoka toliko svetlobe.

Uporabil sem dremel, ki je videti kot običajen sveder, vendar je v resnici odličen za odstranjevanje materiala. To je eden izmed kosov, ki bi jih morali dobiti s katerim koli dremelom. S pločevinko stisnjenega zraka odstranite žagovino iz dremela.

Vroče lepite vse na svoje mesto. Prepričajte se, da je akumulator dobro pritrjen, ker za vstavljanje/odstranjevanje baterije potrebuje veliko sile in ne želite, da bi nosilec baterije šel nikamor.

2. korak: Mikrokrmilnik in vezje

Mikrokrmilnik in vezje
Mikrokrmilnik in vezje
Mikrokrmilnik in vezje
Mikrokrmilnik in vezje
Mikrokrmilnik in vezje
Mikrokrmilnik in vezje

Stikalo za vklop sem postavil pred Arduino UNO, tako da pri preklopu stikala nič ne porabi energije iz baterij. To bi moralo pomagati baterijam zdržati čim dlje, ko projekt ni vklopljen. Arduino plošče so pri upravljanju porabe energije zelo slabe - porabijo veliko toka, če so vklopljene, tudi če ne delajo ničesar aktivno.

Pozitiven konec akumulatorja priključite na VIN (vhod napetosti) mikrokrmilnika, tako da z vgrajenim regulatorjem napetosti regulatorja zniža napetost na 5 V, ki jo potrebuje. Če bi napajali več luči, bi morda morali zanje uporabiti lasten regulator napetosti, vendar bi moral UNO zmožiti 5 LED.

Za izravnavo signala sem uporabil upor med izhodom podatkov in LED trakom - brez upora lahko pride do naključnega utripanja slikovnih pik. Velikost upora res ni pomembna, vse med 50Ω in 400Ω bi moralo delovati.

3. korak: Optične luči

Image
Image
Optične luči
Optične luči
Optične luči
Optične luči

Po nekaj poskusih in napakah sem na koncu našel dober način, da vlakne optičnih vlaken spravim skozi platno.

  1. Uporabite največjo šivalno iglo, ki jo morate narediti, da skozi prednjo stran platna in penaste plošče naredite luknjo. Priporočam, da že na samem začetku prebodete vsako luknjo, ki jo želite, da jo lahko obrnete in vidite, kam lahko/ne morete postaviti posnetkov kabelske organizacije
  2. Vzemite klešče z igelnim nosom in primite optično vlakno manj kot centimeter od konca
  3. Optično vlakno potegnite skozi luknjo, ki ste jo naredili z iglo
  4. Pramen speljite skozi različne plastične sponke, kjer je nekoliko daljši, kot je potrebno - kasneje ga bomo razrezali
  5. S pištolo za vroče lepilo na nastavitvi NIZKA temperatura (če ima to možnost) nanesite kapljico vročega lepila na pramen optičnih vlaken, kjer se prebija skozi penasto ploščo. Druga možnost je, da uporabite te modre lepljive stvari. Vroče lepilo nekoliko deformira pramen, vendar se zdi, da ne moti preveč optičnih lastnosti
  6. S škarjami za žico odrežite pramen nekoliko stran od platna.

Če želite pospešiti postopek, lahko pred vročim lepilom prelistate več vlaken zapored. Na splošno bi morali ostati sami.

Pazite, da vlakna optičnih vlaken na mizi ne zlomite ali zmečkate - zdrobijo se in če bo pramen prekratk, boste žalostni in ga boste morali popraviti. Baterijo uporabite kot protiutež, da bo okvir slike manjši od polovice na mizi.

Ker sem namesto črne uporabljal belo penasto ploščo, je prižgano veliko svetlobe. Kot popravilo sem zalepil v nekaj aluminijaste folije med lučmi in platnom.

Uporabite toplotno skrčljivo cev, da držite vsak snop optičnih vlaken skupaj.

  1. Pramene za sveženj odrežite na približno enako dolžino
  2. Odsek postavite skozi toplotno skrčljivo cev
  3. S toplotno pištolo ali spajkalnikom ga skrčite. Če uporabljate spajkalnik, pustite, da se stran likalnika rahlo dotakne cevi in se bo skrčila. Cev se ne sme topiti, ker je zasnovana za malo toplote.

Sčasoma sem z vročim lepilom pritrdil konec svežnja na vsako LED luč. Uporabil sem veliko vročega lepila, tako da so vlakna dejansko dobila svetlobo iz vsake rdeče/zelene/modre diode v svetlobi - ko so vlakna zelo blizu svetlobe, "bele" barve (ki je pravzaprav rdeča, zelena in modra) potem bodo nekatera vlakna samo rdeča, nekatera pa zelena, namesto da bi bila vsa bela. To bi lahko izboljšali z uporabo papirja ali česa drugega za njegovo razpršitev, vendar mi je vroče lepilo delovalo dovolj dobro.

4. korak: Programiranje

Pri programiranju sem uporabil tri knjižnice

FastLED - odlična knjižnica za nadzor LED trakov WS2812 (in mnogih drugih naslovljivih LED trakov) -

Arduino Low Power - Ne vem, koliko energije to dejansko prihrani, vendar je bilo zelo enostavno izvesti in bi moralo pomagati prihraniti malo energije na funkciji, ki je le bele luči, nato pa za vedno odložiti.

EEPROM - Uporablja se za branje/shranjevanje trenutnega načina projekta. To omogoča projektu, da poveča barvni način vsakič, ko ga izklopite in znova vklopite, kar odpravlja potrebo po ločenem gumbu za spremembo načina. Knjižnica EEPROM se namesti vsakič, ko namestite Arduino IDE.

Skico sem uporabil tudi za utripanje luči, ki jih je postavil nekdo drug. Naključno osvetli slikovno piko od osnovne barve do barve vrha in nato nazaj. https://gist.github.com/kriegsman/88954aae22b03a66… (uporablja tudi knjižnico FastLED)

Za Visual Studio sem uporabil tudi vtičnik vMicro - to je razširjena različica Arduino IDE. Ima veliko uporabnih funkcij samodejnega dokončanja in poudarja težave v vaši kodi, ne da bi jo bilo treba sestavljati. Stane 15 dolarjev, vendar je tako vredno, če boste ustvarili več kot en projekt Arduino, zato vas bo prisilil, da spoznate Visual Studio, ki je zelo zmogljiv program.

(Prilagam tudi datoteko kode.ino, ker gostovanje Gitub Gista z navodili uniči veliko praznih mest v datoteki)

Koda Arduino, ki izvaja 4 barvne načine na Arduino UNO za nekatere luči LED WS2812B z uporabo knjižnice FastLED

#vključi
#vključi
#vključi
// FastLED namestitev
#defineNUM_LEDS4
#definePIN3 // Podatkovni pin za LED trak
LED diode CRGB [NUM_LEDS];
// Nastavitev utripanja
#defineBASE_COLORCRGB (2, 2, 2) // Osnovna barva ozadja
#definePEAK_COLORCRGB (255, 255, 255) // Najvišja barva za utripanje do
// Znesek za povečanje barve za vsako zanko, ko postane svetlejša:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Znesek za zmanjšanje barve za vsako zanko, ko postane temnejša:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Možnost, da se vsak piksel začne svetliti.
// 1 ali 2 = nekaj svetlobnih pik hkrati.
// 10 = veliko slikovnih pik, ki se naenkrat posvetlijo.
#defineCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
bajt runMode;
bajt globalBright = 150;
bajt globalDelay = 20; // Zakasnitev hitrosti za utripanje
bajtni naslov = 35; // Naslov za shranjevanje načina delovanja
voidsetup ()
{
FastLED.addLeds (LED, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Zaženite način za zagon
runMode = EEPROM.read (naslov);
// Povečanje načina delovanja za 1
EEPROM.write (naslov, način delovanja + 1);
}
voidloop ()
{
stikalo (runMode)
{
// Trdno bela
case1: fill_solid (svetleče diode, NUM_LEDS, CRGB:: bela);
FastLED.show ();
DelayForever ();
zlom;
// Nekako počasi utripa
primer 2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
zlom;
// Hitro utripa
primer 3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
zlom;
// Mavrica
primer 4:
RunRainbow ();
zlom;
// Indeks izven območja, ga ponastavite na 2 in nato zaženite način 1.
// Ko se arduino znova zažene, bo zagnal način 2, za zdaj pa način 1
privzeto:
EEPROM.write (naslov, 2);
runMode = 1;
zlom;
}
}
voidRunRainbow ()
{
bajt *c;
uint16_t i, j;
medtem ko (res)
{
za (j = 0; j <256; j ++) {// 1 cikel vseh barv na kolesu
za (i = 0; i <NUM_LEDS; i ++) {
c = kolo (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
zamuda (globalDelay);
}
}
}
byte * Wheel (byte WheelPos) {
statični bajt c [3];
if (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - Kolesa * 3;
c [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - Kolesa * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
drugače {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - Kolesa * 3;
}
vrnitev c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
medtem ko (res)
{
za (uint16_t i = 0; i <NUM_LEDS; i ++) {
if (PixelState == SteadyDim) {
// te slikovne pike so trenutno: SteadyDim
// zato naključno razmislimo, da bi postalo svetlejše
če (naključno8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// te slikovne pike so trenutno: GettingBrighter
// zato, če je v največji barvi, ga znova preklopite v zatemnitev
if (lučke > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
drugače {
// drugače pa samo posvetlite:
LED diode += DELTA_COLOR_UP;
}
}
else {// spet postaja slabše
// te slikovne pike so trenutno: GettingDimmerAgain
// zato, če se vrne v osnovno barvo, preklopite na stalno zatemnitev
if (lučke <= BASE_COLOR) {
LED diode = BASE_COLOR; // ponastavimo na natančno osnovno barvo, če jo pregrejemo
PixelState = SteadyDim;
}
drugače {
// drugače pa samo še zatemnite:
LED -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // inicializiramo vse slikovne pike v SteadyDim.
fill_solid (svetleče diode, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
medtem ko (res)
{
zamuda (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte rdeča, byte zelena, byte blue) {
// FastLED
LED diode [Pixel].r = rdeča;
LED diode [Pixel].g = zelena;
LED diode [Pixel].b = modra;
}

oglejte si rawFiberOptic_ClemsonPic.ino, ki ga gosti ❤ GitHub

5. korak: Končni izdelek

Končni izdelek
Končni izdelek
Končni izdelek
Končni izdelek
Končni izdelek
Končni izdelek

Ta-da! Upam, da bo ta Instructable navdihnil koga drugega, da naredi lasten podoben projekt. Res ni bilo težko narediti in bil sem presenečen, da tega ni storil nihče, in o tem še napisal temeljita navodila.

Priporočena: