Sadržaj:

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

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

Video: Zvezdana nebeska kravata: 9 koraka (sa slikama)
Video: Part 4 - The Picture of Dorian Gray Audiobook by Oscar Wilde (Chs 15-20) 2024, Novembar
Anonim
Image
Image
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie

Prije nekog vremena pronašao sam dječju igračku s fiberopticima u trgovini dolara i počeo razmišljati o tome š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 vjerovatno 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. Kôd č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 sa 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 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
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 ih za LED lemljenje na glavnu PCB.

Spojio je sve katode (-) na GND i 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

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

Počeo sam sa 7 LED dioda, ali bilo je samo 6 PWM portova i jedna od LED dioda koje sam ponovno lemio je umrla. Upravo sam zadržao 5 radnih LED dioda i 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, dugmeta, priključka za mikro-USB, zaglavlja iz Arduina i optičkih vlakana. (koristite masku za prašinu!)

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

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

Trenjem pri otvaranju i zatvaranju oštećene su 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ćom mašinom, 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 pokušao izravnati i ne koristiti previše. Sve u svemu, 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 jedno po jedno, ali ubrzo sam primijetio da bi bilo bolje napraviti male snopove i zalijepiti ih na LED diodu odjednom. To bi olakšalo održavanje stabilnosti dok se ljepilo ne osuši. Pogrešio je prvi LED koji je ovo shvatio.

Obavezno upotrijebite prozirno ljepilo! Ono koje sam koristio sušilo se vrlo sporo i 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.

Zalijepio sam male crne gumene limove kako bih spriječio curenje svjetla na vrhu i odvojio LED diode.

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

Korak 6: Provođ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.

Zalijepio 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 provukao sve žice i osjetio napetost žica, odlučio sam zalijepiti sve do kravate je bila bolja ideja i odrezali su 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 bilo mi je teško sve učiniti ravnim koliko sam htio.

Korak 7: Lijepljenje vlakana na kravatu

Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje vlakana na kravatu
Lijepljenje 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 prilikom pritiska na nju, stavio sam malo papira između njih. Ne izgleda tako sjajno, ali dobro funkcionira. I ne vidite ga kad je zatvoren.

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

Fotografije s bijelom košuljom nastaju prije nego što odseč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 dostigne taj prosjek, odlučit će sa 3/4 šanse da pređe na nižu svjetlinu. Također nasumično postavlja novu minimalnu svjetlinu, maksimalnu svjetlinu, vrijeme čekanja na minimalnu i maksimalnu svjetlinu i brzinu koju povećava ili smanjuje svaki krug (1-255) sa 5 unaprijed postavljenih vrijednosti. Zatim će raditi ciklus dok ponovo ne dostigne prosjek. Samo 2 LED diode mogu biti u visokom ciklusu istovremeno.

Svako stanje je predstavljeno 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, većim i vremenskim postavkama * kako bi izgledalo poput zvjezdanog neba kada se koristi s vlaknima. * U ovom slučaju to će biti provedeno nerešeno. * * Mogućnost gore/dolje = 1/4 gore, 3/4 dolje, s maksimalnim 2 * povećanjem do maksimuma u isto vrijeme. * * Prosek ostaje isti. * Minimalne, maksimalne i vremenske opcije nasumično se mijenjaju * od 5 opcija svaki put kada LED ponovo dosegne prosjek. * * Kreirao Billy Jaspers, maj 2019. *

/ Deklarirajte pinove

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

// Vremenske varijable

unsigned long currentTime; nepotpisano 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}; // Vreme č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 velike mogućnosti 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 startup = true; // Treba li pokrenuti početne postavke?

// Smjerne varijable

/* 0 = Prosječno čekanje 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 na Prosjek 7 = Ažuriranje varijabli*/ int statusLED [5] = {0, 0, 0, 0, 0}; int iznosHighLED = 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)); // Postavljanje randomseed -a

// Deklariranje izlaza

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); 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) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Ažuriranje Led randomNumber = random (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 tački: Idite na Waiting Avg} 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; // prestanak čekanja statusLED = 3; // Postavi statusLed na Čekanje ažuriranja}} else if (statusLED == 1) {// -1- Prosječno na Nisko if (currentBright <= brightMin ) {statusLED = 2; // Ako je na najnižoj tački: Idite na Waiting Low} inače {currentBright = currentBright -povećanje ; // Ostalo: Smanji svjetlinu}} else if (statusLED == 6) {// -6- Prelazak na Max do Prosj. If (currentBright = timeWaitMax ) {// Ako je čekanje AND timeWaitAvg prošlo: statusWaiting = false; // status prestanka čekanjaLED = 6; // Postavi statusLed na Čekanje ažuriranja}} else if (statusLED == 4) {// -4- Prosječno na Max ako (currentBright > = brightMax ) {statusLED = 5; // Ako je na najnižoj tački: Idite na Waiting High} inače {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 zaustavljanja statusLED = 7; // Postavi statusLed na Čekanje ažuriranja}}} i = 0; lastRound = millis (); // Postavi kada je posljednji krug završen. writeToLED (); // Zapišite sve podatke na LED diode}}

Korak 9: Finalni proizvod

Image
Image
Finalni proizvod
Finalni proizvod
Finalni proizvod
Finalni proizvod

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

Preporučuje se: