Sadržaj:

Optičko svjetlo u platnu Ispis: 5 koraka
Optičko svjetlo u platnu Ispis: 5 koraka

Video: Optičko svjetlo u platnu Ispis: 5 koraka

Video: Optičko svjetlo u platnu Ispis: 5 koraka
Video: STEFAN MIHIĆ SE HVATA SA ŽENOM U TOALETU! 2024, Juli
Anonim
Image
Image
Optičko svjetlo u ispisu na platnu
Optičko svjetlo u ispisu na platnu

Ovaj projekat dodaje jedinstveni spin standardnom otisku na platnu. Programirao sam u 4 različita načina osvjetljenja, ali možete jednostavno dodati još. Način se mijenja svaki put kada ga isključite i ponovo uključite umjesto da imate zasebno dugme za smanjenje oštećenja okvira. Baterije bi trebale izdržati više od 50 sati korištenja - nisam siguran, ali napravio sam sličan projekt za prijatelja koji je koristio 5x više svjetala i trajao je 20+ sati na jednom kompletu baterija.

Materijali

  • Štampa na platnu sa radnim prostorom - ja sam svoj naručio sa https://www.easycanvasprints.com jer su imale dobre cijene i otvorena leđa. Deblji okvir od 1,5 "bio je savršen i dao mi je puno prostora za savijanje niti optičkih vlakana. Osim toga, želite sliku koja vam daje 3" po 8 "radnog prostora za bateriju, mikrokontroler i LED trake
  • LED svjetla - koristio sam adresabilne LED trake WS2812. Nemojte se plašiti, zaista su laki za korištenje s FastLED ili Neopixel bibliotekama! Možete koristiti i bilo koju standardnu LED traku, jednostavno nećete moći kontrolirati svaki dio svjetla zasebno bez mnogo više ožičenja.
  • Mikrokontroler - Koristio sam Arduino Uno, ali za ovaj projekt možete koristiti gotovo sve.
  • Baterija - ovo sam naručio sa eBay -a (iz Kine) i naslovio se "Držač baterija za baterije 6 x 1,5V AA 2A CELL"
  • Optički vlakni - još jednom, naručeno iz Kine na eBayu - "PMMA plastični kabel od optičkih vlakana za kraj izrađen od LED svjetla" ili "PMMA završni svjetlovodni kabel za komplet stropnih svjetiljki". Koristio sam veličine 1 mm i 1,5 mm, zapravo preporučujem da koristite manje od toga.
  • Prekidač za uključivanje/isključivanje - "Minijaturni prekidači za uključivanje/isključivanje 2 položaja SPDT"
  • Obujmice za organizaciju žice - Ovo pomaže da vlakna optičkih vlakana budu lijepa i uredna.
  • Pjenasta ploča, konektor s punom jezgrom, termoskupljajuće cijevi

Alati

  • Dremel - koristi se za umetanje prekidača za uključivanje/isključivanje u okvir za sliku. To bi se možda moglo postići bušilicom i jako velikim komadom, ali to ne preporučujem.
  • Lemilica - pričvršćivanje žica na LED traku
  • Pištolj za vruće ljepilo - doslovno svaki korak ovog projekta
  • Velika igla za šivanje - za probijanje rupa kroz platno i pjenu za svjetla

Korak 1: Pjenasta ploča, baterija i prekidač za uključivanje/isključivanje

Pjenasta ploča, baterija i prekidač za uključivanje/isključivanje
Pjenasta ploča, baterija i prekidač za uključivanje/isključivanje
Pjenasta ploča, baterija i prekidač za uključivanje/isključivanje
Pjenasta ploča, baterija i prekidač za uključivanje/isključivanje

Prije svega, trebate pričvrstiti komad pjenaste ploče na stražnju stranu platna. To nam daje lijepu čvrstu površinu na koju možemo pričvrstiti sve ostalo i pomaže u držanju niti optičkih vlakana na mjestu. Samo upotrijebite egzaktni nož ili rezač kutija da izrežete komad pjenaste ploče odgovarajuće veličine i vruće ga zalijepite na mnogo mjesta. Preporučujem upotrebu crne pjenaste ploče kako ne bi dopustila prodor toliko svjetlosti.

Koristio sam dremel bit koji izgleda kao normalna bušilica, ali je zapravo odličan za uklanjanje materijala. To je jedan od dijelova koji bi trebao doći s bilo kojim dremelom. Koristite limenku komprimiranog zraka da biste uklonili svu piljevinu iz dremela.

Vrućim ljepilom sve na mjestu. Uvjerite se da je baterija dobro pričvršćena jer je za umetanje/vađenje baterije potrebna velika snaga i ne želite da držač baterije ide bilo gdje.

Korak 2: Mikrokontroler i krug

Mikrokontroler i sklop
Mikrokontroler i sklop
Mikrokontroler i sklop
Mikrokontroler i sklop
Mikrokontroler i sklop
Mikrokontroler i sklop

Stavio sam prekidač za napajanje ispred Arduino UNO -a tako da kada prebacite prekidač ništa ne troši energiju iz baterija. To bi trebalo pomoći da baterije traju što je moguće duže kada projekt nije uključen. Arduino ploče su notorno loše u upravljanju napajanjem - koriste puno struje ako su uključene čak i ako ne rade ništa aktivno.

Priključite pozitivni kraj baterije u VIN (ulaz napona) mikrokontrolera tako da koristi ugrađeni regulator napona kontrolera kako bi smanjio napon na 5V koji mu je potreban. Da smo napajali više svjetla, možda bismo za njih trebali koristiti vlastiti regulator napona, ali UNO bi trebao biti u mogućnosti rukovati s 5 LED dioda.

Koristio sam otpornik između izlaza podataka i LED trake da ublažim signal - bez otpornika možete dobiti nasumično treptanje piksela. Veličina otpornika zapravo nije bitna, bilo što između 50Ω i 400Ω trebalo bi raditi.

Korak 3: Svjetla sa optičkim vlaknima

Image
Image
Svjetla sa optičkim vlaknima
Svjetla sa optičkim vlaknima
Svjetla sa optičkim vlaknima
Svjetla sa optičkim vlaknima

Nakon pokušaja i grešaka, na kraju sam pronašao dobar način da provučem vlaknasta vlakna kroz platno.

  1. Upotrijebite najveću iglu za šivanje koju morate probiti kroz prednju stranu platna i pjenaste ploče. Preporučujem da na samom početku probušite svaku rupu koju želite kako biste je mogli preokrenuti i vidjeti gdje možete/ne možete staviti isječke za kabelsku organizaciju
  2. Uzmite par kliješta s iglastim nosem i uhvatite vlakno optičke niti manje od centimetra od kraja
  3. Provucite vlakno optičkog vlakna kroz rupu koju ste napravili iglom
  4. Provucite pramen kroz razne plastične kopče tamo gdje je nešto duži nego što je potrebno - kasnije ćemo ga izrezati
  5. S pištoljem za vruće ljepilo na NISKOJ postavci temperature (ako ima tu opciju) stavite kapljicu vrućeg ljepila na vlakno od optičkih vlakana gdje probada kroz pjenu. Alternativno, možete upotrijebiti te plave ljepljive stvari. Vruće ljepilo pomalo deformira pramen, ali čini se da se ne miješa previše u optičke kvalitete
  6. Odrežite pramen malo dalje od platna pomoću rezača žice.

Da biste ubrzali proces, možete probadati kroz mnoga vlakna uzastopno prije nanošenja vrućeg ljepila. Općenito bi trebali sami ostati na mjestu.

Pazite da ne slomite niti zgnječite niti optičkih vlakana na stolu - oni će se slomiti, a ako pramen postane prekratak, bit ćete tužni i morat ćete ga ponoviti. Koristite bateriju kao protutežu kako biste okvir slike imali manje od polovice na stolu.

Budući da sam koristio bijelu pjenastu ploču umjesto crne, puno svjetla je sijalo dok su LED diode bile uključene. Kao popravak zalijepio sam aluminijsku foliju između svjetala i platna.

Upotrijebite termoskupljajuće cijevi da držite svaki snop optičkih vlakana zajedno.

  1. Izrežite niti za snop na približno istu dužinu
  2. Provucite dio kroz termoskupljajuće cijevi
  3. Za smanjivanje upotrijebite toplinski pištolj ili lemilicu. Ako koristite lemilicu, samo dopustite da strana glačala lagano dodirne cijev i ona će se smanjiti. Ne bi trebalo otopiti cijev jer je dizajnirana za malo topline.

Na kraju sam upotrijebio vruće ljepilo za pričvršćivanje kraja snopa na svako LED svjetlo. Koristio sam puno vrućeg ljepila tako da su vlakna zapravo dobila svjetlost od svake crvene/zelene/plave diode u svjetlu - kada su vlakna jako blizu svjetlosti, "bijele" boje (koja je zapravo crvena, zelena i plava) tada će neka vlakna biti samo crvena, a neka zelena, umjesto da su sva bijela. To bi se moglo poboljšati korištenjem papira ili nečeg drugog za njegovo širenje, ali vruće ljepilo mi je dovoljno dobro djelovalo.

Korak 4: Programiranje

U programiranju sam koristio tri biblioteke

FastLED - odlična biblioteka za kontrolu WS2812 LED traka (i mnogih drugih adresabilnih LED traka) -

Arduino niske potrošnje energije - ne znam koliko se time zapravo štedi, ali bilo je super jednostavno implementirati i trebalo bi pomoći uštedjeti mali dio energije na funkciji koja je samo bijelo svjetlo, a zatim odgađa zauvijek.

EEPROM - Koristi se za čitanje/pohranjivanje trenutnog načina rada projekta. To omogućava projektu da poveća način rada u boji svaki put kada ga isključite i ponovo uključite, što eliminira potrebu za posebnim gumbom za promjenu načina rada. EEPROM biblioteka se instalira kad god instalirate Arduino IDE.

Takođe sam koristio skicu za treperenje svetala koje je neko drugi postavio. Nasumično osvjetljava piksel od osnovne boje do boje vrha, a zatim nazad. https://gist.github.com/kriegsman/88954aae22b03a66… (koristi i FastLED biblioteku)

Koristio sam i vMicro dodatak za Visual Studio - ovo je pojačana verzija Arduino IDE -a. Ima mnoštvo korisnih funkcija automatskog dovršavanja i ističe probleme u vašem kodu bez potrebe za kompajliranjem. Košta 15 USD, ali vrijedi ako ćete napraviti više od jednog Arduino projekta, a to će vas natjerati da naučite o Visual Studiju koji je super moćan program.

(Prilažem i kod.ino datoteku jer Instructable hosting Github Gista uništava mnogo praznih mjesta u datoteci)

Arduino kôd koji pokreće 4 načina rada u boji na Arduino UNO -u za neka LED svjetla WS2812B pomoću FastLED biblioteke

#include
#include
#include
// FastLED postavljanje
#defineNUM_LEDS4
#definePIN3 // Podaci za LED traku
CRGB LED diode [NUM_LEDS];
// Twinkle setup
#defineBASE_COLORCRGB (2, 2, 2) // Osnovna boja pozadine
#definePEAK_COLORCRGB (255, 255, 255) // Vrhunska boja do svjetlucanja do
// Iznos za povećanje boje za svaku petlju kako postaje svjetlija:
#defineDELTA_COLOR_UPCRGB (4, 4, 4)
// Iznos za smanjenje boje za svaku petlju kako postaje tamnija:
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Šansa da svaki piksel počne svijetliti.
// 1 ili 2 = nekoliko piksela za posvjetljivanje odjednom.
// 10 = puno piksela koji se posvjetljuju odjednom.
#defineCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
byte runMode;
bajt globalBright = 150;
bajt globalDelay = 20; // Odgođena brzina za treperenje
bajt adresa = 35; // Adresa za spremanje načina rada
voidsetup ()
{
FastLED.addLeds (LED diode, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Pokretanje načina rada
runMode = EEPROM.read (adresa);
// Povećava način rada za 1
EEPROM.write (adresa, način rada + 1);
}
voidloop ()
{
prekidač (runMode)
{
// Puna bijela
case1: fill_solid (LED diode, NUM_LEDS, CRGB:: bijelo);
FastLED.show ();
DelayForever ();
break;
// Svijetli nekako sporo
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
break;
// Brzo treperi
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
break;
// Rainbow
case4:
RunRainbow ();
break;
// Indeks je izvan raspona, vratite ga na 2, a zatim pokrenite način 1.
// Kad se arduino ponovno pokrene, pokrenut će način 2, ali za sada pokrenuti način 1
zadano:
EEPROM.write (adresa, 2);
runMode = 1;
break;
}
}
voidRunRainbow ()
{
bajt *c;
uint16_t i, j;
dok (istina)
{
za (j = 0; j <256; j ++) {// 1 ciklus svih boja na točku
za (i = 0; i <NUM_LEDS; i ++) {
c = Točak (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
kašnjenje (globalDelay);
}
}
}
byte * Wheel (byte WheelPos) {
statički bajt c [3];
if (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
}
elseif (Točkići <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
else {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
return c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
dok (istina)
{
za (uint16_t i = 0; i <NUM_LEDS; i ++) {
if (PixelState == SteadyDim) {
// ovi pikseli su trenutno: SteadyDim
// pa nasumično razmatramo da postane svjetliji
if (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// ovi pikseli su trenutno: GettingBrighter
// pa ako ima najveću boju, ponovo ga prebacite u tamniji
if (LED diode > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
else {
// u suprotnom, samo ga pojačavajte:
LED diode += DELTA_COLOR_UP;
}
}
else {// ponovo postaju tamniji
// ovi pikseli su trenutno: GettingDimmerAgain
// pa ako se vrati na osnovnu boju, prebacite je na stalnu zatamnjenost
if (LED diode <= BASE_COLOR) {
LED diode = BASE_COLOR; // resetiramo na tačnu osnovnu boju, u slučaju da smo prešli
PixelState = SteadyDim;
}
else {
// u suprotnom, samo nastavite smanjivati:
LED diode -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // inicijalizira sve piksele u SteadyDim.
fill_solid (LED diode, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
dok (istina)
{
kašnjenje (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, byte red, byte green, byte blue) {
// FastLED
LED diode [Pixel].r = crveno;
LED diode [Pixel].g = zelena;
LED diode [Pixel].b = plava;
}

pogledajte rawFiberOptic_ClemsonPic.ino hostirano sa ❤ od GitHub -a

Korak 5: Finalni proizvod

Finalni proizvod
Finalni proizvod
Finalni proizvod
Finalni proizvod
Finalni proizvod
Finalni proizvod

Ta-da! Nadam se da će ovaj Instructable inspirirati nekoga drugog da napravi svoj vlastiti sličan projekt. To zaista nije bilo teško učiniti i bio sam iznenađen što to niko nije učinio i napisao je temeljne instrukcije o tome.

Preporučuje se: