Sisukord:
- Samm: skeemid ja riistvara
- Samm 2: PCB valmistamine LED -ide majutamiseks
- Samm: kasti valmistamine
- 4. samm: lipsu ettevalmistamine
- Samm: kiudoptiliste materjalide liimimine
- 6. samm: fiiberoptiliste materjalide sidumine läbi lipsu
- 7. samm: kiudoptiliste materjalide liimimine lipsule
- 8. samm: kood
- 9. samm: lõpptoode
Video: Tähistaeva juhitud lips: 9 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
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
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
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
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
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
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
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
Ma arvan, et see õnnestus hästi. Lips ei ole liiga paks, jäik, pikk ega raske ning täheefekt tundub hämmastav.
Soovitan:
CPU ja GPU juhitud ventilaatori kontroller: 6 sammu (piltidega)
CPU ja GPU juhitud ventilaatori kontroller: uuendasin hiljuti oma graafikakaarti. Uuel GPU mudelil on kõrgem TDP kui minu protsessoril ja vana GPU, nii et tahtsin paigaldada ka täiendavaid korpuse ventilaatoreid. Kahjuks on minu MOBO -l ainult 3 kiiruse reguleerimisega ventilaatori pistikut ja neid saab ühendada ainult
Bow lips PCB märk: 4 sammu
Bow lips PCB märk: Iga pidu on erinev ja igaüks tahab olla ainulaadne, mida arvate trükkplaadi kikilipsu kandmisest? PCB märgid on alati olnud trükkplaadi kunstiline vorm. Seda projekti ma näitan Ehitasin selle kantava vibu T
Liikumise juhitud ajavahemik: 7 sammu (piltidega)
Liikumise juhitud ajavahemik: ajavahemikud on suurepärased! Need aitavad meil heita pilgu aeglaselt liikuvale maailmale, mille unustame selle ilu hinnata. Kuid mõnikord võib pidev timelapse video olla igav või ümberringi toimub nii palju asju, et ainult üks nurk pole
Jah - ei: Arduino juhitud postkast: 4 sammu (piltidega)
Jah - ei: Arduino juhitud postkast: Selles projektis näitame teile, kuidas muuta teie postkast lõbusamaks ja kasulikumaks. Kui teie postkastis on kiri, on selle postkasti puhul tore tuli, mis näitab, kas teil on e -kiri, ja saate seda postkasti Bluetoothiga automaatselt juhtida
Lumememme juhitud servaga peegelmärk: 21 sammu (piltidega)
Lumememm Led Edge Lit Mirror Sign: Selles juhendatavas kirjeldan, kuidas saate teha jõuluvana lumememme disainiga led -servaga valgustatud klaaspeegli! Märk on graveeritud Ikea klaasist peegelplaadile. Need on saadaval neljakaupa ja on üsna tasuvad. Ma