Turinys:

Žvaigždėto dangaus vedamas kaklaraištis: 9 žingsniai (su nuotraukomis)
Žvaigždėto dangaus vedamas kaklaraištis: 9 žingsniai (su nuotraukomis)

Video: Žvaigždėto dangaus vedamas kaklaraištis: 9 žingsniai (su nuotraukomis)

Video: Žvaigždėto dangaus vedamas kaklaraištis: 9 žingsniai (su nuotraukomis)
Video: Donatas Blanka - Išsaugosiu aš ( žodžiai ) 2024, Gruodis
Anonim
Image
Image
„Starry Sky Led Tie“
„Starry Sky Led Tie“
„Starry Sky Led Tie“
„Starry Sky Led Tie“

Prieš kurį laiką vieno dolerio parduotuvėje radau vaikišką žaislą su pluošto optika ir pradėjau galvoti, ką su juo padaryti.

Viena iš mano beprotiškų idėjų buvo kaklaraištis su žvaigždėto dangaus efektu.

Aš vis dar turėjau keletą „arduino pro mini“, „adafruit“lentų ir baterijų, kurios tikriausiai tiktų šiam projektui.

Taigi kai tik savo miesto lombarde radau gražų platų kaklaraištį ir radau dėžutę, kuri gali tikti aparatinei įrangai, nusprendžiau to ieškoti ir pabandyti ją sukurti.

Ši pamoka parodo, kaip aš tai padariau.

Jis veikia su „arduino pro mini“, „adafruit powerboost 500“įkrovikliu, „emmerich icr 18650nh-sp“ir 5 baltais šviesos diodais. Dėl kodo šviesos diodo ryškumo pasikeitimas yra atsitiktinis. (Pirmosios 40 vaizdo įrašo sekundžių yra 3 kartus greitesnės)

1 žingsnis: Schemos ir aparatinė įranga

Schemos ir aparatinė įranga
Schemos ir aparatinė įranga
Schemos ir aparatinė įranga
Schemos ir aparatinė įranga

Aš naudoju šią aparatūrą:

- PCB su ledo baltos spalvos šviesos diodais ir 220 omų rezistoriais.

-„Arduino pro mini“(aš naudoju nokautą)

-„Adafruit Powerboost 500“įkroviklis

-„Emmerich Li-ion accu ICR-18650NH-SP“https://store.arduino.cc/arduino-pro-mini

- optiniai pluoštai (įvairių dydžių)

2 žingsnis: Padarykite PCB prieglobos šviesos diodus

Šviesos diodų priėmimas prie PCB
Šviesos diodų priėmimas prie PCB
Šviesos diodų priėmimas prie PCB
Šviesos diodų priėmimas prie PCB
Šviesos diodų priėmimas prie PCB
Šviesos diodų priėmimas prie PCB

Nupjoviau juostelę nuo PCB, kad laikytų šviesos diodus, ir panaudojau LED kaiščius, kad prilituosiu prie pagrindinės PCB.

Prijungė visus katodus (-) prie GND ir panaudojo pusę kaiščių, kad priliptų prie pagrindinės PCB.

Prijungė visus anodus (+) prie rezistorių ir kabeliais prie arduino.

Kiekvienas šviesos diodas turi būti prijungtas prie vieno iš šių PWM prievadų: 3, 5, 6, 9, 10, 11

Kvailas su šiuo projektu padariau daug klaidų ir pamiršau patikrinti teisingus PWM prievadus, todėl vėliau turėjau išspręsti. Išbandyta naudojant „High/Low“, todėl tai pastebėjau tik vėliau.

Pradėjau nuo 7 šviesos diodų, tačiau buvo tik 6 PWM prievadai ir vienas iš perparduotų šviesos diodų mirė. Aš ką tik pasilikau 5 veikiančius šviesos diodus ir nenaudoju šeštojo.

3 žingsnis: dėžutės gamyba

Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba
Dėžutės gamyba

Aš naudoju „Bosch GRO“(kaip „Dremel“) ir grąžtą, norėdamas iškirpti akumuliatoriaus formą, mygtuką, „micro-usb“prievadą, „Arduino“antraštes ir optinius pluoštus. (naudokite dulkių kaukę!)

Priklijavo akumuliatorių prie dėklo su 2 juostomis.

Naudojo varžtus „Adafruit“plokštės ir PCB tvirtinimui.

Trintis nuo atidarymo ir uždarymo sugadino kai kuriuos laidus. Turėjau juos pertirpinti ir naudoti klijus, kad tai nepasikartotų.

4 žingsnis: kaklaraiščio paruošimas

Kaklaraiščio paruošimas
Kaklaraiščio paruošimas
Kaklaraiščio paruošimas
Kaklaraiščio paruošimas
Kaklaraiščio paruošimas
Kaklaraiščio paruošimas

Pašalino susiuvimą iš apatinės kaklaraiščio dalies, kad tilptų guminis lakštas.

Norėdami paslėpti aparatinę įrangą ir vis tiek sugebėti ją pasiekti, jei reikia, nusprendžiau naudoti užtrauktuką.

Man nesiseka siuvimo mašina, todėl mano miela mama uždėjo užtrauktuką kaklaraiščio gale.

Kai tai buvo padaryta, aš priklijavau guminį lakštą kaklaraištyje. Bijojau naudoti per daug klijų, kurie prisotintų audinį ir būtų matomi iš priekio, todėl stengiausi jį išlyginti ir nenaudoti per daug. Apskritai tai atrodo gerai, tačiau keliose vietose pastebėjau per daug arba per mažai klijų, nes jie pateko per audinį arba nelabai prilipo. Laimei, tai vos matoma iš arti esant ryškiai šviesai.

Dėžutė ir kaklaraištis jau baigti. Laikas klijuoti šviesolaidžius!

5 žingsnis: šviesolaidžių klijavimas

Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas
Šviesolaidžių klijavimas

Žaislas turėjo vieną didelį pluošto optinių laidų ryšulį, kuris lengvai nutrūko. Iš pradžių bandžiau juos klijuoti po vieną, bet netrukus pastebėjau, kad geriau būtų padaryti mažus ryšulius ir iš karto priklijuoti juos prie šviesos diodo. Taip būtų lengviau išlaikyti jį pastovų, kol klijai bus sausi. Sugadino pirmąjį šviesos diodą, kuris tai išsiaiškino.

Būtinai naudokite skaidrius klijus! Tas, kurį naudojau, išdžiūvo labai lėtai, o greitai išdžiūstantys klijai, kuriuos išbandžiau ant pirmojo šviesos diodo, tapo balti, todėl kai kurie pirmojo šviesos diodo pluoštai tapo mažiau ryškūs.

Aš priklijavau mažus juodus guminius lakštus, kad būtų išvengta šviesos nutekėjimo viršuje ir atskirtų šviesos diodus.

Vienas lakštų neleido uždaryti dėklo, todėl pridėjau guminę juostelę, kad dangtelis būtų uždarytas.

6 žingsnis: skaidulinių skaidulų perleidimas per kaklaraištį

Šviesolaidžių pervedimas per kaklaraištį
Šviesolaidžių pervedimas per kaklaraištį
Šviesolaidžių pervedimas per kaklaraištį
Šviesolaidžių pervedimas per kaklaraištį
Šviesolaidžių pervedimas per kaklaraištį
Šviesolaidžių pervedimas per kaklaraištį

Pradedant nuo apačios, adata sugniaužiau skylutes ir po vieną perkišiau pluoštus. Kiekvieno šviesos diodo pluoštai atsitiktinai pasiskirsto per kaklaraištį.

Ant nugaros priklijavau juodą juostelę, kuri turėjo eiti iki pat mažesnės kaklaraiščio dalies, kad išlaikyčiau dėžutės svorį, tačiau iškišęs visus laidus ir pajutęs laidų įtempimą nusprendžiau klijuoti viskas iki kaklaraiščio buvo geresnė idėja ir nukirpė juostelę.

Kadangi žaislo šviesolaidiniai laidai buvo tokie trumpi, juos buvo sunku pritvirtinti per visą kaklaraištį. Aš ribojau dėžutės išdėstymą ir man buvo sunku padaryti viską taip plokščią, kaip norėjau.

7 žingsnis: šviesolaidžių klijavimas prie kaklaraiščio

Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio
Pluošto optikos klijavimas ant kaklaraiščio

Visus šviesolaidinius laidus priklijavau prie guminio lakšto, kad laidai nebūtų ištraukti iš guminio lakšto ir kad kaklaraištis būtų plokščias.

Kad įsitikinčiau, jog spaudžiant spaudimą, neužklijavau spaustuko prie kaklaraiščio, įdėjau šiek tiek popieriaus. Atrodo ne taip puikiai, bet veikia gerai. Ir jūs nematote, kai jis uždarytas.

Po to, kai klijai išdžiūvo, aš nutraukiau laidus priekyje ir šiek tiek nupjoviau guminį lakštą virš aukščiausios vielos, nes kaklaraištis buvo šiek tiek per ilgas.

Nuotraukos su baltais marškiniais daromos prieš nupjaunant paskutinę gumos dalį.

8 žingsnis: Kodas

Žemiau kodo, kurį parašiau kaklaraiščiui.

Visi šviesos diodai turi nustatytą „vidurkį“(iš tikrųjų ne vidutinį, o vidutinį ryškumą).

Kai tik jis pasieks šį vidurkį, jis nuspręs su galimybe 3/4 sumažinti ryškumą. Jis taip pat atsitiktine tvarka nustato naują minimalų ryškumą, maksimalų ryškumą, laukimo laiką iki minimalaus ir maksimalaus ryškumo ir greitį, kurį jis padidina arba sumažina kiekvieną turą (1-255) nuo 5 iš anksto nustatytų verčių. Tada jis atliks ciklą, kol vėl pasieks vidurkį. Tik 2 šviesos diodai vienu metu gali veikti dideliu ciklu.

Kiekviena būsena vaizduojama sveiko skaičiaus verte (1–7), nustatančia, ar ji yra vidutinė, maža, vidutiniškai laukianti, atnaujinama ir pan.

Norėdami gauti informacijos apie kodo įkėlimą į arduino, apsilankykite www.arduino.cc

/ * Žvaigždėto dangaus kaklaraištis * * Tai scenarijus, skirtas atsitiktine tvarka išblukinti 5 šviesos diodus iš vidutinio į mažesnį * arba didesnį ryškumą, atsitiktinai nustatant mažesnius, didesnius ir laiko nustatymus *, kad jie atrodytų kaip žvaigždėtas dangus, kai jie naudojami su pluošto optika. * Šiuo atveju jie bus įgyvendinti lygiosiomis. * * Aukštyn/žemyn tikimybė = 1/4 aukštyn, 3/4 žemyn, daugiausiai 2 * pakyla iki maksimumo tuo pačiu metu. * * Vidutinis išlieka tas pats. * Minimalios, maksimalios ir laiko parinktys keičiasi atsitiktinai * nuo 5 parinkčių kiekvieną kartą, kai šviesos diodas vėl pasiekia vidurkį. * * Sukūrė Billy Jaspers, 2019 m. Gegužės mėn.

/ Deklaruoti smeigtukus

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

// Laiko kintamieji

unsigned long currentTime; nepasirašytas ilgas laukimo laikas [5]; unsigned long lastRound;

// LED kintamieji

int brightMin [5] = {10, 10, 10, 10, 10}; // Minimalus ryškumas int brightAvg [5] = {200, 200, 200, 200, 200}; // Vidutinis ryškumas int brightMax [5] = {240, 240, 240, 240, 240}; // Maksimalus ryškumas int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Laukimo laikas int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Laukimo laikas int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Laukimo laikas didinant [5] = {2, 5, 4, 5, 2}; // Ryškumo padidėjimas int currentBright [5] = {200, 230, 210, 210, 235}; // Dabartinis ryškumas

// LED kintamųjų galimybės

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimalios ryškumo galimybės int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimalios ryškumo galimybės int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Laukimo laikas esant mažam ryškumui int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Laukimo laikas esant dideliam ryškumui int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Laukimo laikas esant vidutinėms ryškumo galimybėms, didinant po žingsnįPos [5] = {2, 4, 5, 3, 1}; // ryškumo galimybių padidėjimas

// Kintamieji

bool paleidimas = tiesa; // Ar reikia pradėti pradžios nustatymus?

// Kryptiniai kintamieji

/* 0 = Laukiama vidutiniškai 1 = eina vid. Į žemą 2 = laukia mažai 3 = eina žemai iki vid. 4 = eina vid. Į maks. 5 = laukia maks. 6 = eina aukštyn iki vid. 7 = atnaujina kintamuosius*/ int statusLED [5] = {0, 0, 0, 0, 0}; int sumaHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Ar LED laukia?

// Atsitiktiniai kintamieji

ilgas atsitiktinis skaičius; // Ilgai saugoti atsitiktinį skaičių long randomNumberTwo; // Ilgai saugoti antrąjį atsitiktinį skaičių

// skaitikliai

int i = 0; // Pagrindinės kilpos skaitiklis

void setup () {

Serial.begin (115200); // Pradėti serijinį randomSeed (analogRead (A0)); // Nustatyti atsitiktinį sėklą

// Deklaruoti rezultatus

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

// Įrašykite duomenis į šviesos diodus

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

// Pagrindinė kilpa

void loop () {if (startup) {// Paleidimo nustatymai lastRound = millis (); // Nustatyti lastRound įkrovos rašymuiToLED (); // Įrašykite pradžios duomenis į LED paleidimą = false; // Išjungti paleidimą} currentTime = millis (); // Nustatykite dabartinį laiką

if (currentTime - lastRound> = atnaujinimo dažnis) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Led randomNumber = random (5) atnaujinimas; brightMin = brightMinPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę reikšmę minimaliam ryškumui randomNumber = random (5); brightMax = brightMaxPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę vertę maksimaliam ryškumui randomNumber = random (5); timeWaitLow = timeLowPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę reikšmę mažam laukimo laikui randomNumber = random (5); timeWaitMax = timeHighPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę reikšmę ilgam laukimo laikui randomNumber = random (5); timeWaitAvg = laikasAvgPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę vidutinio laukimo laiko reikšmę randomNumber = random (5); prieaugis = prieaugisPos [atsitiktinis skaičius]; // Nustatyti atsitiktinę reikšmę prieaugio reikšmei randomNumber = random (2); // Nustatyti atsitiktinę krypties randomNumberTwo = atsitiktinę vertę (2); // Nustatykite atsitiktinę krypties vertę, jei (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Jei žemiausiame taške: eikite į laukimo vidurkį} else {currentBright = currentBright +padidėjimas ; // Kiti: didesnis ryškumas}} else if (statusLED == 2) {// -2- Laukiama mažai, jei (! StatusWaiting ) {// Jei nelaukiate: waitingTime = milis (); // Nustatyti laukimo laiko būsenąWaiting = true; // Pradėti laukti} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Jei laukiama IR timeWaitAvg praėjo: statusWaiting = false; // Sustabdyti laukimo būsenąLED = 3; // Nustatyti statusLed į Laukiama atnaujinimo}} else if (statusLED == 1) {// -1- Vidutinis rodymas žemas, jei (currentBright <= brightMin ) {statusLED = 2; // Jei žemiausiame taške: eikite į Laukia mažai} else {currentBright = currentBright -increment ; // Kiti: mažesnis ryškumas}} else if (statusLED == 6) {// -6- Maksimalus vidurkis, jei (currentBright = timeWaitMax ) {// Jei laukiama IR timeWaitAvg: statusWaiting = false; // Sustabdyti laukimo būsenąLED = 6; // Nustatyti statusLed į Waiting for update}} else if (statusLED == 4) {// -4- Vid. Į maks., Jei (currentBright > = brightMax ) {statusLED = 5; // Jei žemiausiame taške: eikite į „Laukia aukščiausia“} else {currentBright = currentBright +prieaugis ; // Kiti: didesnis ryškumas}} else if (statusLED == 0) {// -0- Laukiama vidutiniškai, jei (! StatusWaiting ) {// Jei nelaukiate: waitingTime = milis (); // Nustatyti laukimo laiko būsenąWaiting = true; // Pradėti laukti} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Jei laukiama IR timeWaitAvg praėjo: statusWaiting = false; // Sustabdyti laukimo būsenąLED = 7; // Nustatyti statusLed į Laukiama atnaujinimo}}} i = 0; lastRound = milis (); // Nustatykite, kada baigsis paskutinis turas. writeToLED (); // Įrašykite visus duomenis į šviesos diodus}}

9 žingsnis: galutinis produktas

Image
Image
Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas

Manau, kad tai pavyko gerai. Kaklaraištis nėra per storas, standus, ilgas ar sunkus, o žvaigždės efektas atrodo nuostabiai.

Rekomenduojamas: