Përmbajtje:

Kravata Starry Sky Led: 9 hapa (me fotografi)
Kravata Starry Sky Led: 9 hapa (me fotografi)

Video: Kravata Starry Sky Led: 9 hapa (me fotografi)

Video: Kravata Starry Sky Led: 9 hapa (me fotografi)
Video: Днестр- от истока до моря Часть 9 Начало каньона Дворец Бадени Коропец Возиловский водопад Сплав 2024, Nëntor
Anonim
Image
Image
Kravatë me yje të ndezur me yje
Kravatë me yje të ndezur me yje
Kravatë me yje të ndezur me yje
Kravatë me yje të ndezur me yje

Pak kohë më parë gjeta një lodër për fëmijë me fibra optike në një dyqan dollarësh dhe fillova të mendoja se çfarë mund të bëja me të.

Një nga idetë e çmendura që kisha, ishte të bëja një kravatë me efektin e një qielli me yje.

Unë ende kisha disa arduino pro mini, dërrasa adafruit dhe bateri të vendosura përreth që ndoshta do t'i përshtateshin këtij projekti.

Kështu, sapo gjeta një kravatë të bukur të gjerë në një dyqan pengjesh në qytetin tim dhe gjeta një kuti që mund t'i përshtatej pajisjeve, vendosa të shkoja për të dhe të provoja ta ndërtoja.

Ky udhëzues ju tregon se si e kam bërë atë.

Punon me një karikues arduino pro mini, adafruit powerboost 500, emmerich icr 18650nh-sp dhe 5 LED të bardhë. Kodi e bën ndriçimin e LED të ndryshojë rastësisht. (40 sekondat e para të videos janë me shpejtësi 3x)

Hapi 1: Skemat dhe hardueri

Skemat dhe hardueri
Skemat dhe hardueri
Skemat dhe hardueri
Skemat dhe hardueri

Unë jam duke përdorur pajisjet e mëposhtme:

- PCB me LED të bardhë akulli dhe rezistorë 220 Ohm.

-Arduino pro mini (kam përdorur një knockoff)

-Ngarkues Adafruit Powerboost 500

-Emmerich Li-ion accu ICR-18650NH-SP

- Fijet optike (në madhësi të ndryshme)

Hapi 2: Bërja e PCB që mbajnë LED -të

Marrja e PCB që mban LED -të
Marrja e PCB që mban LED -të
Marrja e PCB që mban LED -të
Marrja e PCB që mban LED -të
Marrja e PCB që mban LED -të
Marrja e PCB që mban LED -të

Kam prerë një shirit nga një PCB për të mbajtur LED dhe kam përdorur kunjat LED për ta bashkuar atë me PCB kryesore.

Lidhi të gjitha katodat (-) me GND dhe përdori gjysmën e kunjave për ta bashkuar atë të ngjitur në PCB kryesore.

Lidhur të gjitha anodat (+) me rezistorët, dhe me kabllo me arduino.

LEDs secila duhet të lidhet me një nga portat e mëposhtme PWM: 3, 5, 6, 9, 10, 11

Silly me bëri shumë gabime me këtë projekt dhe harrova të kontrolloj portat e sakta PWM, kështu që më duhej të rishitesha disa më vonë. Testuar me Lartë/E Ulët kështu që këtë e vura re vetëm më vonë.

Fillova me 7 LED, por kishte vetëm 6 porte PWM dhe një nga LED -ët e rishitur vdiq. Unë vetëm mbajta 5 LED që punojnë dhe nuk po përdor të 6 -at.

Hapi 3: Bërja e Kutisë

Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë
Bërja e Kutisë

Kam përdorur një Bosch GRO (si Dremel) dhe një stërvitje për të prerë formën e baterisë, butonin, portën e mikro-usb, titujt nga Arduino dhe fijet optike. (përdorni një maskë pluhuri!)

Ngjiteni baterinë në kasë me 2 breza.

Përdorni vida për të montuar bordin Adafruit dhe PCB.

Fërkimi nga hapja dhe mbyllja dëmtoi disa tela. Më duhej t'i rishitja ato dhe të përdorja zam për të parandaluar që ajo të ndodhte përsëri.

Hapi 4: Përgatitja e kravatës

Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës

Hoqi qepjen nga pjesa e poshtme e kravatës për t'iu përshtatur fletës së gomës.

Për të fshehur harduerin dhe për të qenë akoma në gjendje të hyj në të nëse është e nevojshme, vendosa të përdor një zinxhir.

Unë nuk jam mirë me një makinë qepëse, kështu që nëna ime e ëmbël vendosi një zinxhir në pjesën e pasme të kravatës.

Pasi kjo ishte bërë, unë ngjita fletën e gomës në kravatë. Kisha frikë të përdorja shumë zam që do të ngopte pëlhurën dhe do të ishte e dukshme nga përpara, kështu që u përpoqa ta zbardhja atë dhe të mos përdor shumë. Në përgjithësi duket mirë, por në disa vende vura re shumë ose shumë pak zam, sepse erdhi përmes pëlhurës ose nuk e ngjiti pëlhurën shumë mirë. Për fat të mirë kjo është vetëm mezi e dukshme nga distanca e afërt në dritë të ndritshme.

Kutia dhe kravata tani janë bërë. Koha për të ngjitur fibrat optike!

Hapi 5: Ngjitja e Fiberoptics

Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics
Ngjitja e Fiberoptics

Lodra kishte një pako të madhe fibrash optike që u copëtuan lehtë. Unë u përpoqa t'i ngjisja ato një nga një në fillim, por shpejt vura re se do të ishte më mirë të bëja tufa të vogla dhe t'i ngjisja ato menjëherë në LED. Kjo do ta bënte më të lehtë për ta mbajtur atë të qëndrueshëm derisa zamja të ishte tharë. Rrëmbeu LED -in e parë duke e kuptuar këtë.

Sigurohuni që të përdorni një zam transparent! Ajo që kam përdorur thahet shumë ngadalë dhe ngjitësi i tharjes së shpejtë që provova në LED -in e parë u bë i bardhë, duke i bërë disa fibra nga LED -ja e parë më pak të ndritshme.

Unë ngjita çarçafë të vegjël gome të zi për të parandaluar rrjedhjen e dritës në majë dhe për të ndarë LED -të.

Njëra prej çarçafëve e pengoi mbylljen e kasës, kështu që shtova një brez gome për ta mbajtur kapakun të mbyllur.

Hapi 6: Vendosja e fiberoptikës përmes kravatës

Vendosja e fiberoptikës përmes kravatës
Vendosja e fiberoptikës përmes kravatës
Vendosja e fiberoptikës përmes kravatës
Vendosja e fiberoptikës përmes kravatës
Vendosja e fiberoptikës përmes kravatës
Vendosja e fiberoptikës përmes kravatës

Duke filluar nga fundi, i shtrëngova vrimat me një gjilpërë dhe i vendosa fijet një nga një. Fijet e secilit LED përhapen rastësisht në kravatë.

Unë ngjita një shirit të zi në anën e pasme që duhej të shkonte deri në pjesën më të vogël të kravatës për të mbajtur peshën e kutisë, por pasi i futa të gjitha telat dhe ndjeva tensionin e telave, vendosa të ngjit gjithçka për kravatë ishte një ide më e mirë dhe preu shiritin.

Meqenëse telat me fibra optike nga lodra ishin aq të shkurtra, ishte e vështirë t'i vendosësh ato në të gjithë kravatën. Isha i kufizuar në pozicionimin e kutisë dhe e kisha të vështirë të bëja gjithçka aq të sheshtë sa doja.

Hapi 7: Ngjitja e Fiberoptics në kravatë

Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë
Ngjitja e Fiberoptics në kravatë

I ngjita të gjitha telat me fibër optike në fletën e gomës për të parandaluar tërheqjen e telave nga fleta e gomës dhe për ta bërë kravatën të sheshtë.

Për t'u siguruar që nuk e kam ngjitur kapësen në kravatë kur bëja presion mbi të, vendosa pak letër në mes. Nuk duket aq mirë, por funksionon mirë. Dhe nuk e shihni kur është e mbyllur.

Pasi zamja u tha, i preva telat në pjesën e përparme dhe e preva pak nga fleta e gomës pak mbi telin më të lartë, sepse lidhja ishte shumë e gjatë.

Fotografitë me këmishën e bardhë janë bërë para se të pres pjesën e fundit të gomës.

Hapi 8: Kodi

Poshtë kodit që kam shkruar për kravatë.

Të gjitha LED kanë një "mesatare" të caktuar (jo në fakt një mesatare, por një shkëlqim të mesëm).

Sapo të arrijë atë mesatare, do të vendosë me një shans 3/4 për të shkuar në një shkëlqim më të ulët. Ai gjithashtu vendos rastësisht një shkëlqim të ri minimal, shkëlqim maksimal, kohë të pritjes për ndriçimin minimal dhe maksimal dhe shpejtësinë që rrit ose zvogëlon çdo raund (1-255) nga 5 vlera të paracaktuara. Pastaj do të bëjë një cikël derisa të arrijë përsëri mesataren. Vetëm 2 LED mund të jenë në një cikël të lartë në të njëjtën kohë.

Çdo gjendje përfaqësohet nga një vlerë e plotë (1-7) që përcakton nëse do të jetë mesatarisht e ulët, mesatare e ulët, pritje e ulët, azhurnim, etj.

Për informacion në lidhje me ngarkimin e kodit në arduino, ju lutemi hidhini një sy www.arduino.cc

/ * Starry Sky Tie * * Ky është një skenar për të zbehur rastësisht 5 LED nga një shkëlqim mesatar në një më të ulët * ose më të lartë me cilësime të rastësishme më të ulëta, më të larta dhe të kohës * për t'u dukur si një qiell me yje kur përdoret me fibra optike. * Në këtë rast këto do të zbatohen në barazim. * * Shansi lart/poshtë = 1/4 lart, 3/4 poshtë, me një maksimum prej 2 * duke shkuar deri në maksimum në të njëjtën kohë. * * Mesatarja mbetet e njëjtë. * Opsionet minimale, maksimale dhe të kohës ndryshojnë rastësisht * nga 5 opsione sa herë që një LED arrin përsëri mesataren. * * Krijuar nga Billy Jaspers, maj 2019. *

/ Shpallni kunjat

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Ndryshoret e kohës

aktual i panënshkruar aktual Koha; pritje e gjatë e panënshkruar Koha [5]; i panënshkruar gjatë lastRound;

// Variablat LED

int brightMin [5] = {10, 10, 10, 10, 10}; // Shkëlqimi minimal int brightAvg [5] = {200, 200, 200, 200, 200}; // Ndriçimi mesatar int brightMax [5] = {240, 240, 240, 240, 240}; // Ndriçimi maksimal int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Koha e pritjes në kohënWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Koha e pritjes int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Koha e pritjes në rritje [5] = {2, 5, 4, 5, 2}; // Rritja e shkëlqimit brenda rrymësBright [5] = {200, 230, 210, 210, 235}; // Shkëlqimi aktual

// Mundësitë e ndryshoreve LED

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Mundësitë minimale të ndriçimit int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Mundësitë maksimale të shkëlqimit në kohëLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Koha e pritjes në mundësitë e shkëlqimit të ulët int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Koha e pritjes për mundësitë e shkëlqimit të lartë int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Koha e pritjes mesatare mesatare e shkëlqimit int incrementPos [5] = {2, 4, 5, 3, 1}; // rritje në mundësitë e shkëlqimit

// Variablat

bool startup = true; // A duhet të fillojnë cilësimet e fillimit?

// Ndryshoret e drejtimit

/* 0 = Pritja në Mesatare 1 = kalimi mesatar në të ulët 2 = pritja e ulët 3 = zbritja e ulët në mesatare 4 = shkuar mesatarisht në maksimum 5 = pritja në maksimumin 6 = shkuarja lartë në mesataren 7 = Përditësimi i variablave*/ int statusLED [5] = {0, 0, 0, 0, 0}; int sasiHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // A po pret Led?

// Ndryshore të rastësishme

numri i rastësishëm i gjatë; // Long për të ruajtur numrin e rastit long randomNumberTwo; // I gjatë për të ruajtur numrin e dytë të rastësishëm

// sportelet

int i = 0; // Counter për lak kryesor

void setup () {

Serial.fillo (115200); // Fillo serial randomSeed (analogRead (A0)); // Vendos farën e rastësishme

// Deklaroni rezultatet

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }

// Shkruani të dhëna në LED

void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, aktualBright [1]); analogWrite (LED03, aktualBright [2]); analogWrite (LED04, aktualBright [3]); analogWrite (LED05, aktualBright [4]); }

// lak kryesor

void loop () {if (startup) {// Cilësimet e nisjes lastRound = millis (); // Vendos lastRound për boot writeToLED (); // Shkruani të dhënat e fillimit në nisjen LED = false; // Çaktivizo fillimin} currentTime = millis (); // Vendosni kohën aktuale

nëse (aktualeTime - lastRound> = refreshRate) {

për (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Përditësimi i Led randomNumber = rastësor (5); brightMin = brightMinPos [Numri i rastësishëm]; // Vendosni vlerën e rastësishme për ndriçimin minimal randomNumber = random (5); brightMax = brightMaxPos [Numri i rastësishëm]; // Vendosni vlerën e rastësishme për shkëlqimin maksimal randomNumber = random (5); timeWaitLow = timeLowPos [Numri i rastësishëm]; // Vendosni vlerën e rastësishme për kohën e ulët të pritjes randomNumber = random (5); timeWaitMax = timeHighPos [numri i rastësishëm]; // Vendosni vlerën e rastësishme për kohën e lartë të pritjes randomNumber = random (5); timeWaitAvg = timeAvgPos [Numri i rastësishëm]; // Vendosni vlerën e rastësishme për kohën mesatare të pritjes randomNumber = random (5); rritje = rritjePos [Numër i rastësishëm]; // Vendosni vlerën e rastësishme për vlerën në rritje randomNumber = random (2); // Vendosni vlerën e rastësishme për drejtimin randomNumberTwo = e rastësishme (2); // Vendosni vlerën e rastësishme për drejtimin nëse (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Nëse në pikën më të ulët: Shkoni te Mesatarja e pritjes} tjetër {currentBright = currentBright +rritje ; // Tjetër: Ndriçim më i lartë}} tjetër nëse (statusLED == 2) {// -2- Pritja e ulët nëse (! StatusPritja ) {// Nëse nuk pret: koha e pritjes = milis (); // Cakto statusin e kohës së pritjesPritja = e vërtetë; // Filloni të prisni} tjetër nëse (statusWaiting && currentTime-prisTime > = timeWaitLow ) {// Nëse pritja DHE kohaWaitAvg ka kaluar: statusWaiting = false; // Ndalo statusin e pritjesLED = 3; // Cakto statusLed to Waiting for update}} tjetër nëse (statusLED == 1) {// -1- Shkon mesatarisht në Low nëse (currentBright <= brightMin ) {statusLED = 2; // Nëse në pikën më të ulët: Shkoni te Pritja e ulët} tjetër {currentBright = currentBright -rritje ; // Tjetër: Ndriçimi më i ulët}} tjetër nëse (statusLED == 6) {// -6- Shkon në Max në mes nëse (currentBright = timeWaitMax ) {// Nëse pritja DHE kohaWaitAvg ka kaluar: statusPritja = e rreme; // Ndalo statusin e pritjesLED = 6; // Cakto statusLed në Pritje për përditësim}} tjetër nëse (statusLED == 4) {// -4- Shkon mesatarisht në Max nëse (currentBright > = brightMax ) {statusLED = 5; // Nëse në pikën më të ulët: Shkoni te Pritja e Lartë} tjetër {currentBright = currentBright +rritje ; // Tjetër: Ndriçim më i lartë}} tjetër nëse (statusLED == 0) {// -0- Pritja në Mesatare nëse (! StatusPritja ) {// Nëse nuk pret: pritjaKoha = milis (); // Cakto statusin e kohës së pritjes Pritja = e vërtetë; // Filloni të prisni} tjetër nëse (statusWaiting && currentTime-prisTime > = timeWaitAvg ) {// Nëse pritja DHE kohaWaitAvg ka kaluar: statusWaiting = false; // Ndalo statusin e pritjesLED = 7; // Cakto statusLed në Pritje për përditësim}}} i = 0; lastRound = milis (); // Vendoseni kur të përfundojë raundi i fundit. writeToLED (); // Shkruani të gjitha të dhënat tek ZHEL}}

Hapi 9: Produkti Përfundimtar

Image
Image
Produkti Përfundimtar
Produkti Përfundimtar
Produkti Përfundimtar
Produkti Përfundimtar

Unë mendoj se ka funksionuar mirë. Kravata nuk është shumë e trashë, e ngurtë, e gjatë ose e rëndë dhe efekti i yllit duket i mahnitshëm.

Recommended: