Sadržaj:

Zvjezdana nebeska kravata: 9 koraka (sa slikama)
Zvjezdana nebeska kravata: 9 koraka (sa slikama)

Video: Zvjezdana nebeska kravata: 9 koraka (sa slikama)

Video: Zvjezdana nebeska kravata: 9 koraka (sa slikama)
Video: Žiri je prekinuo njen nastup jer su mislili da ne pjeva ona. 2024, Studeni
Anonim
Image
Image
Zvjezdano nebo Led kravata
Zvjezdano nebo Led kravata
Zvjezdano nebo Led kravata
Zvjezdano nebo Led kravata

Prije nekog vremena pronašao sam dječju igračku s fiberopticima u trgovini za dolar i počeo razmišljati što bih mogao učiniti s njom.

Jedna od ludih ideja koju sam imao, bila je kravata s efektom zvjezdanog neba.

Još sam imao postavljenih arduino pro mini, adafruit ploča i baterija koje bi vjerojatno odgovarale ovom projektu.

Čim sam u zalagaonici u svom gradu našao lijepu široku kravatu i našao kutiju koja bi mogla odgovarati hardveru, odlučio sam otići i pokušati je izgraditi.

Ova instrukcija vam pokazuje kako sam to napravio.

Radi na arduino pro mini, adafruit powerboost 500 punjaču, emmerich icr 18650nh-sp i 5 bijelih LED dioda. Kod čini promjenu svjetline LED diode nasumičnom. (Prvih 40 sekundi videozapisa su 3x brzine)

Korak 1: Sheme i hardver

Sheme i hardver
Sheme i hardver
Sheme i hardver
Sheme i hardver

Koristim sljedeći hardver:

- PCB s ledeno bijelim LED diodama i otpornicima od 220 ohma.

-Arduino pro mini (koristio sam knockoff)

-Adafruit Powerboost 500 punjač

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

- Optička vlakna (u različitim veličinama)

Korak 2: Izrada PCB -a za postavljanje LED dioda

Izrada LED -a na PCB -u
Izrada LED -a na PCB -u
Izrada LED ploča na PCB -u
Izrada LED ploča na PCB -u
Izrada LED ploča na PCB -u
Izrada LED ploča na PCB -u

Odrezao sam traku s PCB -a kako bih držao LED diode i upotrijebio LED pinove za lemljenje na glavnu PCB.

Spojio je sve katode (-) na GND, a polovicu pinova za lemljenje zalijepio na glavnu PCB.

Spojite sve anode (+) na otpornike, a kabelima na arduino.

Svaka LED dioda mora biti spojena na jedan od sljedećih PWM portova: 3, 5, 6, 9, 10, 11

Gluposti sam napravio mnogo pogrešaka s ovim projektom i zaboravio sam provjeriti ispravne PWM portove, pa sam ih kasnije morao ponovno spakirati. Testirano s High/Low pa sam to primijetio tek kasnije.

Počeo sam sa 7 LED dioda, ali bilo je samo 6 PWM priključaka i jedna od LED dioda koje sam ponovno lemio je umrla. Upravo sam zadržao 5 radnih LED dioda, a ne koristim 6.

Korak 3: Izrada kutije

Izrada kutije
Izrada kutije
Izrada kutije
Izrada kutije
Izrada kutije
Izrada kutije
Izrada kutije
Izrada kutije

Koristio sam Bosch GRO (poput Dremela) i bušilicu za izrezivanje oblika baterije, gumba, priključka za mikro-USB, zaglavlja s Arduina i optičkih vlakana. (koristite masku za prašinu!)

Zalijepili bateriju na kućište s 2 trake.

Korišteni vijci za montažu ploče Adafruit i PCB -a.

Trenje zbog otvaranja i zatvaranja oštetilo je neke žice. Morao sam ih ponovno lemiti i koristiti ljepilo da se to ne ponovi.

Korak 4: Priprema kravate

Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate

Uklonjeni su šavovi s donjeg dijela kravate kako bi odgovarali gumenom listu.

Da bih sakrio hardver i ipak mu mogao pristupiti ako je potrebno, odlučio sam upotrijebiti zatvarač.

Nisam dobar sa šivaćim strojem, pa je moja draga mama stavila patentni zatvarač na stražnju stranu kravate.

Nakon što sam to učinio, zalijepio sam gumeni lim za kravatu. Bojao sam se koristiti previše ljepila koje će zasititi tkaninu i biti vidljivo s prednje strane, pa sam ga pokušao izravnati i ne koristiti previše. Sveukupno izgleda dobro, ali na nekoliko mjesta primijetio sam previše ili premalo ljepila jer je prošao kroz tkaninu ili nije dobro zalijepio tkaninu. Srećom, ovo je jedva vidljivo iz blizine pri jakom svjetlu.

Kutija i kravata su sada gotovi. Vrijeme je za lijepljenje fiberoptika!

Korak 5: Lijepljenje vlaknastih vlakana

Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana
Lijepljenje vlaknastih vlakana

Igračka je imala jedan veliki snop optičkih žica koje su se lako raspadale. Prvo sam ih pokušao zalijepiti jedan po jedan, no ubrzo sam primijetio da bi bilo bolje napraviti male snopove i zalijepiti ih na LED odjednom. Tako bi bilo lakše održavati ga stabilnim dok se ljepilo ne osuši. Pogrešio je prvi LED koji je to shvatio.

Obavezno upotrijebite prozirno ljepilo! Ono koje sam koristio sušilo se vrlo sporo, a ljepilo za brzo sušenje koje sam isprobao na prvoj LED postalo je bijelo, pa su neka vlakna iz prve LED diode postala manje svijetla.

Zalijepila sam male crne gumene limove kako bih spriječila curenje svjetla s vrha i odvojila LED diode.

Jedan od listova spriječio je zatvaranje kućišta pa sam dodao gumicu kako bi poklopac bio zatvoren.

Korak 6: Provlačenje vlakana kroz kravatu

Stavljanje vlakana kroz kravatu
Stavljanje vlakana kroz kravatu
Stavljanje vlakana kroz kravatu
Stavljanje vlakana kroz kravatu
Stavljanje vlakana kroz kravatu
Stavljanje vlakana kroz kravatu

Počevši od dna, iglom sam probušio rupice i provlačio vlakna jedno po jedno. Vlakna svake LED diode nasumično se šire po kravati.

Zalijepila sam crnu traku na stražnju stranu koja je trebala ići sve do manjeg dijela kravate kako bi zadržala težinu kutije, ali nakon što sam provukla sve žice i osjetila napetost žica, odlučila sam zalijepiti sve do kravate bilo je bolja ideja i odrezati traku.

Budući da su optičke žice igračke bile tako kratke, bilo ih je teško namjestiti po kravati. Bio sam ograničen u postavljanju kutije i teško mi je bilo sve učiniti ravnim koliko sam htio.

Korak 7: Lijepljenje vlakana na kravatu

Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu
Lijepljenje vlaknastih vlakana na kravatu

Zalijepila sam sve optičke žice na gumeni lim kako bih spriječila izvlačenje žica iz gumenog lima i kako bi kravata postala ravna.

Da bih bio siguran da nisam zalijepio stezaljku za kravatu pri pritisku na nju, stavio sam malo papira između. Ne izgleda tako sjajno, ali dobro radi. I ne vidite ga kad je zatvoren.

Nakon što se ljepilo osušilo, odrezao sam žice na prednjoj strani i odrezao malo gumeni lim neposredno iznad najviše žice, jer je kravata bila preduga.

Fotografije s bijelom košuljom nastaju prije nego što odrežem posljednji dio gume.

Korak 8: Kôd

Ispod koda koji sam napisao za kravatu.

Sve LED diode imaju postavljeni "prosjek" (zapravo nije prosjek, već srednja svjetlina).

Čim dosegne taj prosjek, odlučit će sa šansom 3/4 otići na nižu svjetlinu. Također nasumično postavlja novu minimalnu svjetlinu, maksimalnu svjetlinu, vrijeme čekanja na minimalnu i maksimalnu svjetlinu te brzinu koju povećava ili smanjuje svaki krug (1-255) s 5 unaprijed postavljenih vrijednosti. Zatim će raditi ciklus dok ponovno ne dosegne prosjek. Samo 2 LED diode mogu biti u visokom ciklusu istovremeno.

Svako stanje predstavljeno je cjelobrojnom vrijednošću (1-7) koja određuje ide li prosječno-nisko, nisko-prosječno, čeka nisko, ažurira se itd.

Za informacije o učitavanju koda na arduino, pogledajte www.arduino.cc

/ * Starry Sky Tie * * Ovo je skripta za nasumično blijeđenje 5 LED dioda sa prosječne na nižu * ili veću svjetlinu sa nasumičnim nižim, višim i vremenskim postavkama * kako bi izgledale poput zvjezdanog neba kada se koriste s fiberopticima. * U ovom slučaju to će biti provedeno neriješeno. * * Mogućnost gore/dolje = 1/4 gore, 3/4 dolje, s maksimumom 2 * u isto vrijeme do maksimuma. * * Prosjek ostaje isti. * Minimalne, maksimalne i vremenske opcije nasumično se mijenjaju * od 5 opcija svaki put kada LED ponovno dosegne prosjek. * * Izradio Billy Jaspers, svibanj 2019. *

/ Deklarirajte igle

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

// Vremenske varijable

unsigned long currentTime; bez potpisa dugo vrijeme čekanja [5]; unsigned long lastRound;

// LED varijable

int brightMin [5] = {10, 10, 10, 10, 10}; // Minimalna svjetlina int brightAvg [5] = {200, 200, 200, 200, 200}; // Prosječna svjetlina int brightMax [5] = {240, 240, 240, 240, 240}; // Maksimalna svjetlina int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Vrijeme čekanja int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Vrijeme čekanja int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Vrijeme čekanja int increment [5] = {2, 5, 4, 5, 2}; // Povećanje svjetline int currentBright [5] = {200, 230, 210, 210, 235}; // Trenutna svjetlina

// Mogućnosti LED varijabli

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimalne mogućnosti svjetline int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimalne mogućnosti svjetline int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Vrijeme čekanja pri mogućnostima niske svjetline int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Vrijeme čekanja na visokim mogućnostima svjetline int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Vrijeme čekanja na prosječnim mogućnostima svjetline int incrementPos [5] = {2, 4, 5, 3, 1}; // povećanje mogućnosti svjetline

// Varijable

bool pokretanje = istina; // Treba li pokrenuti početne postavke?

// Varijable smjera

/* 0 = Čekanje u prosjeku 1 = idući Prosjek na Nisko 2 = Čekanje Nizak 3 = Ide na Nisko do Prosjek 4 = Ide Prosjek na Maks 5 = čeka na Maks 6 = ide Visoko do Prosjek 7 = Ažuriranje varijabli*/ int statusLED [5] = {0, 0, 0, 0, 0}; int količinaHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Čeka li Led?

// Slučajne varijable

long randomNumber; // Dugo za spremanje slučajnog broja dugo randomNumberTwo; // Dugo za spremanje drugog slučajnog broja

// brojači

int i = 0; // Brojač za glavnu petlju

void setup () {

Serial.begin (115200); // Pokretanje serijskog randomSeed (analogRead (A0)); // Postavi nasumično sjeme

// Deklariranje izlaza

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

// Zapisivanje podataka na LED diode

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

// Glavna petlja

void loop () {if (startup) {// Postavke pokretanja lastRound = millis (); // Postavi lastRound za pokretanje writeToLED (); // Zapis početnih podataka u LED startup = false; // Isključivanje pokretanja} currentTime = millis (); // Postavljanje trenutnog vremena

if (currentTime - lastRound> = refreshRate) {

za (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Ažuriranje Led randomNumber = slučajno (5); brightMin = brightMinPos [randomNumber]; // Postavljanje slučajne vrijednosti za minimalnu svjetlinu randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Postavljanje slučajne vrijednosti za maksimalnu svjetlinu randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Postavljanje slučajne vrijednosti za kratko vrijeme čekanja randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Postavljanje slučajne vrijednosti za veliko vrijeme čekanja randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Postavljanje slučajne vrijednosti za prosječno vrijeme čekanja randomNumber = random (5); inkrement = incrementPos [randomNumber]; // Postavljanje slučajne vrijednosti za povećanje vrijednosti randomNumber = random (2); // Postavljanje slučajne vrijednosti za smjer randomNumberTwo = random (2); // Postavljanje slučajne vrijednosti za smjer if (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Ako je na najnižoj točki: Idite na Prosjek čekanja} else {currentBright = currentBright +prirast ; // Inače: veća svjetlina}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// Ako se ne čeka: waitTime = millis (); // Postavljanje vremena čekanja statusWaiting = true; // Počni čekati} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Ako je čekanje AND timeWaitAvg prošlo: statusWaiting = false; // status zaustavljanja statusLED = 3; // Postavi statusLed na Čekanje ažuriranja}} else if (statusLED == 1) {// -1- Going Avg to Low if (currentBright <= brightMin ) {statusLED = 2; // Ako je na najnižoj točki: Idite na Waiting Low} else {currentBright = currentBright -increment ; // Ostalo: Niža svjetlina}} else if (statusLED == 6) {// -6- Idemo na Max do Avg if (currentBright = timeWaitMax ) {// Ako je čekanje AND timeWaitAvg prošlo: statusWaiting = false; // status čekanja statusLED = 6; // Postavi statusLed na Čekanje na ažuriranje}} else if (statusLED == 4) {// -4- Going Avg to Max if (currentBright > = brightMax ) {statusLED = 5; // Ako je na najnižoj točki: Idite na Waiting High} else {currentBright = currentBright +prirast ; // Inače: veća svjetlina}} else if (statusLED == 0) {// -0- Čeka se u prosjeku if (! StatusWaiting ) {// Ako se ne čeka: waitTime = millis (); // Postavljanje vremena čekanja statusWaiting = true; // Počni čekati} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Ako je čekanje AND timeWaitAvg prošlo: statusWaiting = false; // status čekanja statusLED = 7; // Postavi statusLed na Čekanje ažuriranja}}} i = 0; lastRound = millis (); // Postavi kada je posljednji krug završen. writeToLED (); // Zapišite sve podatke u LED diode}}

Korak 9: Završni proizvod

Image
Image
Finalni proizvod
Finalni proizvod
Finalni proizvod
Finalni proizvod

Mislim da je dobro ispalo. Kravata nije previše gusta, čvrsta, duga ili teška, a efekt zvijezde izgleda nevjerojatno.

Preporučeni: