Sisukord:

Tähistaeva juhitud lips: 9 sammu (piltidega)
Tähistaeva juhitud lips: 9 sammu (piltidega)

Video: Tähistaeva juhitud lips: 9 sammu (piltidega)

Video: Tähistaeva juhitud lips: 9 sammu (piltidega)
Video: HARRY POTTER STUDIO TOUR LONDON | COMPLETE WALK THROUGH 2024, November
Anonim
Image
Image
Tähistaeva Led lips
Tähistaeva Led lips
Tähistaeva Led lips
Tähistaeva Led lips

Mõni aeg tagasi leidsin dollaripoest fiiberoptiliste laste mänguasja ja hakkasin mõtlema, mida sellega teha saaksin.

Üks hullumeelseid ideid oli mul tähistaeva mõjuga lipsu tegemine.

Mul olid veel mõned arduino pro mini -d, adafruit -lauad ja patareid, mis ilmselt sobiksid selle projektiga.

Niisiis, niipea kui leidsin oma linna pandimajast kena laia lipsu ja leidsin kasti, mis sobiks riistvaraga, otsustasin selle järele minna ja proovida seda ehitada.

See juhend näitab teile, kuidas ma selle tegin.

See töötab arduino pro mini, adafruit powerboost 500 laadija, emmerich icr 18650nh-sp ja 5 valge LED-iga. Kood muudab LED -i heleduse muutmise juhuslikuks. (Video esimesed 40 sekundit on 3x kiirus)

Samm: skeemid ja riistvara

Skeemid ja riistvara
Skeemid ja riistvara
Skeemid ja riistvara
Skeemid ja riistvara

Ma kasutan järgmist riistvara:

- PCB koos jäävalgete LED -ide ja 220 oomi takistitega.

-Arduino pro mini (ma kasutasin koputamist)

-Adafruit Powerboost 500 laadija

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

- optilised kiud (erinevates suurustes)

Samm 2: PCB valmistamine LED -ide majutamiseks

PCB valmistamine LED -ide majutamine
PCB valmistamine LED -ide majutamine
PCB valmistamine LED -ide majutamine
PCB valmistamine LED -ide majutamine
PCB valmistamine LED -ide majutamine
PCB valmistamine LED -ide majutamine

Lõikasin PCB -lt riba LED -ide hoidmiseks ja kasutasin LED -tihvtide jootmiseks peamise trükkplaadi külge.

Ühendas kõik katoodid (-) GND-ga ja kasutas pooli tihvte selle jootmiseks peamise trükkplaadi külge.

Ühendas kõik anoodid (+) takistitega ja kaablitega arduino külge.

Iga LED peab olema ühendatud ühega järgmistest PWM -portidest: 3, 5, 6, 9, 10, 11

Rumal tegin selle projektiga palju vigu ja unustasin õiged PWM -pordid kontrollida, nii et pidin mõned hiljem lahendama. Testitud kõrge/madalaga, nii et märkasin seda alles hiljem.

Alustasin 7 LED -iga, kuid PWM -porte oli ainult 6 ja üks uuesti müüdud LED -idest suri. Jätsin alles 5 töötavat LED -i ja kuuendat ei kasuta.

Samm: kasti valmistamine

Karbi tegemine
Karbi tegemine
Karbi tegemine
Karbi tegemine
Karbi tegemine
Karbi tegemine
Karbi tegemine
Karbi tegemine

Kasutasin aku, nupu, mikro-USB-pordi, Arduino päiste ja optiliste kiudude väljalõikamiseks Bosch GRO-d (nagu Dremel) ja puurit. (kasutage tolmumaski!)

Liimitud aku 2 ribaga korpuse külge.

Kasutas kruvisid Adafruit plaadi ja trükkplaadi kinnitamiseks.

Avamise ja sulgemise hõõrdumine kahjustas mõningaid juhtmeid. Pidin need uuesti vormima ja liimi kasutama, et seda enam ei juhtuks.

4. samm: lipsu ettevalmistamine

Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine

Eemaldati õmblus lipsu alumisest osast, et see kummilehele sobiks.

Riistvara peitmiseks ja vajadusel sellele juurde pääsemiseks otsustasin kasutada tõmblukku.

Õmblusmasinaga ma hakkama ei saa, nii et mu armas ema pani lipsu taha tõmbluku.

Kui see oli tehtud, liimisin lipsu kummilehe. Kartsin liiga palju liimi kasutamist, mis kanga küllastuks ja eest nähtavaks muutuks, nii et proovisin seda ühtlustada ja mitte liiga palju kasutada. Üldiselt tundub see hea, kuid mõnes kohas märkasin liiga palju või liiga vähe liimi, kuna see tuli kangast läbi või ei kleepinud kangast väga hästi. Õnneks on see eredas valguses lähedalt nähtav.

Karp ja lips on nüüd tehtud. Aeg kiudoptilised materjalid liimida!

Samm: kiudoptiliste materjalide liimimine

Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine
Kiudoptiliste liimimine

Mänguasjal oli üks suur kimp kiudoptilisi juhtmeid, mis lagunesid kergesti. Proovisin neid esialgu ükshaaval liimida, kuid märkasin peagi, et parem oleks teha väikesed kimbud ja need korraga LED -i külge kleepida. See hõlbustaks selle püsimist kuni liimi kuivamiseni. Segas esimese LED -i, mis selle välja mõtles.

Kasutage kindlasti läbipaistvat liimi! See, mida ma kasutasin, kuivas väga aeglaselt ja kiiresti kuivav liim, mida proovisin esimese LED -i peal, muutus valgeks, muutes mõned esimese LED -i kiud vähem heledaks.

Liimisin väikesed mustad kummist lehed, et vältida valguse lekkimist peal ja LED -e eraldada.

Üks leht ei võimaldanud korpust sulgeda, nii et lisasin kaane suletuna kummipaela.

6. samm: fiiberoptiliste materjalide sidumine läbi lipsu

Fiberoptics läbi lipsu
Fiberoptics läbi lipsu
Fiberoptics läbi lips
Fiberoptics läbi lips
Fiberoptics läbi lipsu
Fiberoptics läbi lipsu

Alustades näpistasin nõelaga augud ja panin kiud ükshaaval läbi. Iga LED -i kiud levivad juhuslikult üle lipsu.

Kleepisin tagaküljele musta riba, mis pidi minema kuni lipsu väiksema osani, et hoida karbi kaalu, kuid pärast seda, kui olin kõik juhtmed läbi pannud ja juhtmete pinget tundsin, otsustasin liimida kõik lipsuni oli parem mõte ja lõikas riba ära.

Kuna mänguasja kiudoptilised juhtmed olid nii lühikesed, oli neid raske kogu lipsu külge kinnitada. Olin kasti paigutamisega piiratud ja mul oli raske kõike nii tasaseks muuta, kui soovisin.

7. samm: kiudoptiliste materjalide liimimine lipsule

Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule
Kiudoptiliste materjalide liimimine lipsule

Kleepisin kõik fiiberoptilised juhtmed kummilehele, et vältida juhtmete kummist lehest välja tõmbamist ja lipsu tasaseks muutmist.

Veendumaks, et ma ei kleepinud klambrit lipsule, kui sellele survet avaldasin, panin paberi vahele. See ei tundu nii suurepärane, kuid töötab hästi. Ja sa ei näe seda, kui see on suletud.

Pärast liimi kuivamist katkestasin esiküljel olevad juhtmed ja katkestasin natuke kõrgeima traadi kohal oleva kummilehe, kuna lips oli natuke liiga pikk.

Valge särgiga fotod on tehtud enne, kui ma selle viimase kummi maha lõikan.

8. samm: kood

Koodi all kirjutasin lipsu jaoks.

Kõigil LED -idel on seatud "keskmine" (mitte tegelikult keskmine, vaid keskmine heledus).

Niipea kui see saavutab selle keskmise, otsustab ta võimalusega 3/4 minna madalamale heledusele. Samuti määrab see juhuslikult uue minimaalse heleduse, maksimaalse heleduse, minimaalse ja maksimaalse heleduse ooteaja ning kiiruse, mis suureneb või väheneb igal ringil (1-255) viiest eelseadistatud väärtusest. Siis teeb see tsükli, kuni jõuab uuesti keskmisele. Ainult 2 LED -i võib korraga olla kõrge tsükliga.

Iga olekut tähistab täisarv (1–7), mis määrab, kas see on keskmiselt madal, madal, keskmine ootamine, värskendamine jne.

Lisateavet koodi üleslaadimise kohta arduinosse leiate aadressilt www.arduino.cc

/ * Tähistaeva lips * * See on skript, mis kustutab juhuslikult 5 valgusdioodi keskmiselt madalamale * või kõrgemale heledusega juhuslikult väiksemate, kõrgemate ja ajastamisseadetega *, et need näeksid välja nagu tähistaevas, kui neid kasutatakse koos kiudoptilistega. * Sel juhul rakendatakse need võrdselt. * * Üles/alla võimalus = 1/4 üles, 3/4 allapoole, maksimaalselt 2 * tõuseb samal ajal maksimumini. * * Keskmine jääb samaks. * Miinimum-, maksimum- ja ajastamisvalikud muutuvad juhuslikult * viiest valikust iga kord, kui valgusdiood taas keskmise saavutab. * * Loodud Billy Jaspers, mai 2019. *

/ Deklareeri nööpnõelad

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

// Aja muutujad

allkirjastamata long currentTime; allkirjastamata pikk ooteaeg [5]; allkirjastamata kaua lastRound;

// LED muutujad

int brightMin [5] = {10, 10, 10, 10, 10}; // Minimaalne heledus int brightAvg [5] = {200, 200, 200, 200, 200}; // Keskmine heledus int brightMax [5] = {240, 240, 240, 240, 240}; // Maksimaalne heledus int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Ooteaeg int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Ooteaeg int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Ooteaeg juurdekasvuga [5] = {2, 5, 4, 5, 2}; // heleduse suurenemine int currentBright [5] = {200, 230, 210, 210, 235}; // Praegune heledus

// LED -i muutujate võimalused

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimaalsed heledusvõimalused int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimaalsed heledusvõimalused int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Ooteaeg vähese heleduse korral int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Ooteaeg suure heleduse korral int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Ooteaeg keskmiste heledusvõimaluste korral intrementPos [5] = {2, 4, 5, 3, 1}; // heleduse suurendamine

// Muutujad

bool käivitamine = tõsi; // Kas stardiseadeid on vaja käivitada?

// Suunamuutujad

/* 0 = ootab keskmiselt 1 = läheb keskmiseks madalaks 2 = ootab madalat 3 = läheb madalaks keskmiseks 4 = läheb keskmiseks maksimumini 5 = ootab maksimaalselt 6 = läheb kõrgeks keskmiseks 7 = muutujate värskendamine*/ int olekLED [5] = {0, 0, 0, 0, 0}; int summaHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Kas Led ootab?

// Juhuslikud muutujad

pikk juhuslik arv; // Pikk juhusliku arvu salvestamiseks pikk randomNumberTwo; // Teise juhusliku numbri salvestamiseks kaua

// loendurid

int i = 0; // Põhisilmuse loendur

tühine seadistus () {

Seriaalne algus (115200); // Alusta jada randomSeed (analogRead (A0)); // Määra juhuslik seeme

// Väljundite deklareerimine

pinMode (LED01, VÄLJUND); pinMode (LED02, VÄLJUND); pinMode (LED03, VÄLJUND); pinMode (LED04, VÄLJUND); pinMode (LED05, VÄLJUND); }

// Andmete kirjutamine LED -idele

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

// Põhisilmus

void loop () {if (startup) {// Käivitusseaded lastRound = millis (); // Määra lastRound alglaadimiseks writeToLED (); // Kirjutage stardiandmed LED -i käivitamisel = false; // Lülita käivitamine välja} currentTime = millis (); // Praeguse aja määramine

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Led randomNumber = random (5) värskendamine; brightMin = brightMinPos [juhuslikNumber]; // Minimaalse heleduse juhusliku väärtuse määramine randomNumber = juhuslik (5); brightMax = brightMaxPos [juhuslikNumber]; // Määra maksimaalse heleduse juhuslik väärtus randomNumber = juhuslik (5); timeWaitLow = timeLowPos [juhuslikNumber]; // Määra väikese ooteaja juhuslik väärtus randomNumber = juhuslik (5); timeWaitMax = timeHighPos [juhuslik arv]; // Määra suure ooteaja juhuslik väärtus randomNumber = juhuslik (5); timeWaitAvg = aegAvgPos [juhuslikNumber]; // Keskmise ooteaja juhusliku väärtuse määramine randomNumber = juhuslik (5); juurdekasv = juurdekasvPos [juhuslikNumber]; // Juhuväärtuse määramine juurdekasvu väärtusele randomNumber = juhuslik (2); // Suuna juhusliku väärtuse määramine juhuslikNumberTwo = juhuslik (2); // Suuna juhusliku väärtuse määramine, kui (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Kui madalaim punkt: Mine Oota keskm.} Else {currentBright = currentBright +juurdekasv ; // Muidu: suurem heledus}} else if (statusLED == 2) {// -2- Ootel Madal, kui (! StatusWaiting ) {// Kui ei oota: waitingTime = millis (); // Ooteaja oleku määramineOotamine = true; // Alusta ootamist} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Kui ootamine JA timeWaitAvg on möödas: statusWaiting = false; // Lõpeta ootamise olekLED = 3; // Määra statusLed olekule Uuenduse ootel}} muu, kui (statusLED == 1) {// -1 - Keskmine läheb madalaks, kui (currentBright <= brightMin ) {statusLED = 2; // Kui madalaim punkt: minge ootele Low} else {currentBright = currentBright -kasv ; // Muidu: vähendage heledust}} else if (statusLED == 6) {// -6- Maksimaalne keskmine, kui (currentBright = timeWaitMax ) {// Kui ootamine JA timeWaitAvg on möödas: statusWaiting = false; // Lõpeta ootamise olekLED = 6; // Määra statusLed olekule Uuenduse ootel}} else if (statusLED == 4) {// -4- Keskmine maksimumini läheb, kui (currentBright > = brightMax ) {statusLED = 5; // Kui madalaim punkt: Mine ootele kõrgele} else {currentBright = currentBright +juurdekasv ; // Muidu: suurem heledus}} else if (statusLED == 0) {// -0- Oota keskmiselt, kui (! StatusWaiting ) {// Kui ei oota: waitingTime = millis (); // Ooteaja oleku määramineOotamine = true; // Alusta ootamist} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Kui ootamine JA timeWaitAvg on möödas: statusWaiting = false; // Lõpeta ootamise olekLED = 7; // Seadista olek LED -i ootele värskendust ootama}}} i = 0; lastRound = millis (); // Määra, millal viimane ring on lõppenud. writeToLED (); // Kirjutage kõik andmed valgusdioodidele}}

9. samm: lõpptoode

Image
Image
Lõpptoode
Lõpptoode
Lõpptoode
Lõpptoode

Ma arvan, et see õnnestus hästi. Lips ei ole liiga paks, jäik, pikk ega raske ning täheefekt tundub hämmastav.

Soovitan: