Cuprins:
- Pasul 1: Scheme și hardware
- Pasul 2: Realizarea PCB-ului care găzduiește LED-urile
- Pasul 3: Realizarea cutiei
- Pasul 4: Pregătirea cravatei
- Pasul 5: lipirea fibrelor optice
- Pasul 6: Punerea fibrelor optice prin cravată
- Pasul 7: lipirea fibrelor optice de cravată
- Pasul 8: Codul
- Pasul 9: Produsul final
Video: Starry Sky Led Tie: 9 Pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Acum ceva timp am găsit o jucărie pentru copii cu fibră optică la un magazin de dolari și am început să mă gândesc la ce aș putea face cu ea.
Una dintre ideile nebune pe care le-am avut, a fost să fac o cravată cu efectul unui cer înstelat.
Încă mai aveam niște arduino pro mini, plăci adafruit și baterii care se potriveau probabil acestui proiect.
Așa că, de îndată ce am găsit o cravată largă frumoasă într-o casă de amanet din orașul meu și am găsit o cutie care s-ar putea potrivi cu hardware-ul, am decis să merg după el și să încerc să-l construiesc.
Acest instructable vă arată cum am reușit.
Funcționează pe un arduino pro mini, încărcător adafruit powerboost 500, emmerich icr 18650nh-sp și 5 LED-uri albe. Codul face ca luminozitatea schimbării LED-ului să fie aleatorie. (Primele 40 de secunde ale videoclipului au o viteză de 3x)
Pasul 1: Scheme și hardware
Folosesc următorul hardware:
- PCB cu LED-uri Ice White și rezistențe de 220 Ohm.
- Arduino pro mini (am folosit un knockoff)
- Încărcător Adafruit Powerboost 500
- Emmerich Li-ion accu ICR-18650NH-SP
- Fibre optice (în diferite dimensiuni)
Pasul 2: Realizarea PCB-ului care găzduiește LED-urile
Am tăiat o bandă de pe un PCB pentru a ține LED-urile și am folosit pinii LED-ului pentru a-l lipi pe PCB-ul principal.
Am conectat toți catodii (-) la GND și am folosit jumătate din știfturi pentru a-l lipi lipit de placa principală.
Conectați toți anodii (+) la rezistențe și cu cabluri la arduino.
Fiecare LED trebuie conectat la unul dintre următoarele porturi PWM: 3, 5, 6, 9, 10, 11
Silly me a făcut o mulțime de greșeli cu acest proiect și am uitat să verific porturile PWM corecte, așa că a trebuit să revând câteva după. Testat cu High / Low, așa că am observat asta mai târziu.
Am început cu 7 LED-uri, dar erau doar 6 porturi PWM și unul dintre LED-urile pe care le-am revândut a murit. Tocmai am păstrat cele 5 LED-uri funcționale și nu folosesc al 6-lea.
Pasul 3: Realizarea cutiei
Am folosit un Bosch GRO (ca un Dremel) și un burghiu pentru a decupa forma bateriei, butonul, portul micro-usb, antetele de la Arduino și fibrele optice. (folosiți o mască de praf!)
Am lipit bateria de carcasă cu 2 benzi.
Șuruburi folosite pentru a monta placa Adafruit și PCB.
Fricțiunea de la deschidere și închidere a deteriorat unele fire. A trebuit să le revând și să folosesc clei pentru a preveni repetarea.
Pasul 4: Pregătirea cravatei
Scoaterea cusăturii din partea de jos a cravatei pentru a se potrivi cu foaia de cauciuc.
Pentru a ascunde hardware-ul și a putea să îl accesez în continuare, dacă este necesar, am decis să folosesc un fermoar.
Nu sunt bun cu o mașină de cusut, așa că mama mea dulce a pus un fermoar pe spatele cravatei.
După ce s-a făcut asta, am lipit foaia de cauciuc în cravată. Mi-a fost frică să nu folosesc prea mult adeziv care să sature țesătura și să fie vizibil din față, așa că am încercat să o uniformizez și să nu folosesc prea mult. În general, arată bine, dar în câteva locuri am observat prea mult sau prea puțină lipici, deoarece a trecut prin țesătură sau nu a lipit țesătura foarte bine. Din fericire, acest lucru este abia vizibil de la distanță strânsă, în lumină puternică.
Caseta și cravata sunt acum terminate. E timpul să lipim fibrele optice!
Pasul 5: lipirea fibrelor optice
Jucăria avea un pachet mare de fire din fibră optică care se rupeau cu ușurință. Am încercat să le lipesc unul câte unul la început, dar în curând am observat că ar fi mai bine să facem pachete mici și să le lipim de LED-uri deodată. Acest lucru ar face mai ușor să-l mențineți până când adezivul a fost uscat. Primul LED a dat peste cap acest lucru.
Asigurați-vă că utilizați un lipici transparent! Cel pe care l-am folosit s-a uscat foarte lent și adezivul cu uscare rapidă pe care l-am încercat pe primul LED a devenit alb, făcând unele fibre din primul LED mai puțin strălucitoare.
Am lipit foi mici de cauciuc negru pentru a preveni scurgerea luminii deasupra și pentru a separa LED-urile.
Una dintre foi a împiedicat închiderea carcasei, așa că am adăugat o bandă de cauciuc pentru a menține capacul închis.
Pasul 6: Punerea fibrelor optice prin cravată
Începând de jos, am ciupit găuri cu un ac și am pus fibrele una câte una. Fibrele fiecărui LED se răspândesc aleator pe cravată.
Am lipit o bandă neagră pe spate care trebuia să meargă până la partea mai mică a cravatei pentru a menține greutatea cutiei, dar după ce am introdus toate firele și am simțit tensiunea firelor, am decis să lipesc totul până la cravată a fost o idee mai bună și a tăiat banda.
Din moment ce firele din fibră optică de la jucărie erau atât de scurte, le-a fost greu să le monteze pe toată cravata. Am fost limitat în poziționarea cutiei și mi-a fost greu să fac totul cât de plat am vrut.
Pasul 7: lipirea fibrelor optice de cravată
Am lipit toate firele de fibră optică pe foaia de cauciuc pentru a preveni tragerea firelor din foaia de cauciuc și pentru a face cravata plată.
Pentru a mă asigura că nu am lipit clema de cravată atunci când pun presiune pe ea, am pus niște hârtie între ele. Nu arată atât de bine, dar funcționează bine. Și nu o vezi când este închisă.
După ce lipiciul s-a uscat, am tăiat firele din față și am tăiat puțin foaia de cauciuc chiar deasupra firului cel mai înalt, deoarece cravata a fost puțin prea lungă.
Fotografiile cu cămașa albă sunt făcute înainte de a tăia ultima bucată de cauciuc.
Pasul 8: Codul
Sub codul pe care l-am scris pentru cravată.
Toate LED-urile au o „medie” setată (de fapt nu o medie, ci o luminozitate medie).
De îndată ce va atinge acea medie, va decide cu o șansă de 3/4 să meargă la o luminozitate mai mică. De asemenea, setează aleatoriu o nouă luminozitate minimă, luminozitate maximă, timp de așteptare pentru luminozitate minimă și maximă și viteza pe care o mărește sau scade la fiecare rundă (1-255) de la 5 valori prestabilite. Apoi va face un ciclu până va atinge din nou media. Doar 2 LED-uri pot fi în ciclu ridicat în același timp.
Fiecare stare este reprezentată de o valoare întreagă (1-7) care determină dacă va merge în medie, în medie, în așteptare, în actualizare etc.
Pentru informații despre încărcarea codului pe arduino, vă rugăm să aruncați o privire la www.arduino.cc
/ * Starry Sky Tie * * Acesta este un script pentru a estompa în mod aleatoriu 5 LED-uri de la o luminozitate medie la mai mică * sau mai mare cu setări aleatorii mai mici, mai mari și de sincronizare * pentru a arăta ca un cer înstelat atunci când este utilizat cu fibră optică. * În acest caz, acestea vor fi implementate în egalitate. * * Șansă sus / jos = 1/4 în sus, 3/4 în jos, cu maximum 2 * în sus până la maxim în același timp. * * Media rămâne aceeași. * Opțiunile minime, maxime și de sincronizare se schimbă aleatoriu * din 5 opțiuni de fiecare dată când un LED atinge din nou media. * * Creat de Billy Jaspers, mai 2019. *
/ Declarați pinii
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Variabile de timp
currentTime nesemnat lung; Timp lung de așteptare nesemnat [5]; unsigned long lastRound;
// Variabile LED
int brightMin [5] = {10, 10, 10, 10, 10}; // Luminozitate minimă int brightAvg [5] = {200, 200, 200, 200, 200}; // Luminozitate medie int brightMax [5] = {240, 240, 240, 240, 240}; // Luminozitate maximă int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Timp de așteptare int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Timp de așteptare int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Timp de așteptare int increment [5] = {2, 5, 4, 5, 2}; // Creșterea luminozității int currentBright [5] = {200, 230, 210, 210, 235}; // Luminozitatea curentă
// Posibilități de variabile LED
int brightMinPos [5] = {5, 20, 40, 5, 20}; // Posibilități minime de luminozitate int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Posibilități maxime de luminozitate int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Timp de așteptare cu posibilități de luminozitate redusă int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Timp de așteptare cu posibilități de luminozitate ridicate int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Timp de așteptare cu posibilități medii de luminozitate int incrementPos [5] = {2, 4, 5, 3, 1}; // creșterea posibilităților de luminozitate
// Variabile
bool startup = adevărat; // Trebuie pornite setările de pornire?
// Variabile direcționale
/ * 0 = Se așteaptă în medie 1 = se duce la minim 2 = se așteaptă 3 = se scade la media 4 = se merge la Max 5 = se așteaptă la Max 6 = se ridică la media 7 = Se actualizează variabilele * / int stareLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Led-ul așteaptă?
// Variabile aleatoare
Număr aleatoriu lung; // Lung pentru a stoca numărul aleator lung randomNumberTwo; // Lung pentru a stoca al doilea număr aleatoriu
// contoare
int i = 0; // Contor pentru bucla principală
configurare nulă () {
Serial.begin (115200); // Porniți serial randomSeed (analogRead (A0)); // Setați randomseed
// Declarați ieșirile
pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }
// Scrieți date pe LED-uri
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Bucla principală
void loop () {if (startup) {// Setări startup lastRound = millis (); // Setați lastRound pentru boot writeToLED (); // Scrieți date de pornire la pornirea LED = false; // Dezactivează pornirea} currentTime = millis (); // Setați ora curentă
if (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Actualizare Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Setați valoarea aleatorie pentru luminozitatea minimă randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Setați valoarea aleatorie pentru luminozitatea maximă randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Setați valoarea aleatorie pentru timpul de așteptare scăzut randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Setați valoarea aleatorie pentru timpul mare de așteptare randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Setați valoarea aleatorie pentru timpul mediu de așteptare randomNumber = random (5); increment = incrementPos [randomNumber]; // Setați valoarea aleatorie pentru valoarea incrementului randomNumber = random (2); // Setați valoarea aleatorie pentru direcția randomNumberTwo = random (2); // Setați valoarea aleatorie pentru direcție dacă (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Dacă în cel mai de jos punct: Mergeți la Așteptare medie} else {currentBright = currentBright + increment ; // Altfel: Luminozitate mai mare}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// If not waiting: waitingTime = millis (); // Setați starea timpului de așteptareWaiting = true; // Începeți să așteptați} altceva dacă (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Dacă așteptarea AND timeWaitAvg a trecut: statusWaiting = false; // Opriți starea de așteptareLED = 3; // Setați statusLed la Se așteaptă actualizarea}} else if (statusLED == 1) {// -1- Mergeți la Low dacă (currentBright <= brightMin ) {statusLED = 2; // Dacă în cel mai de jos punct: Mergeți la Așteptare scăzută} else {currentBright = currentBright -increment ; // Altfel: Luminozitate scăzută}} else if (statusLED == 6) {// -6- Trecerea maximă la Avg if (currentBright = timeWaitMax ) {// Dacă așteptat ȘI timeWaitAvg a trecut: statusWaiting = false; // Stop status statusLED = 6; // Setați statusLed la Se așteaptă actualizarea}} else if (statusLED == 4) {// -4- Mergeți la Max dacă (currentBright > = brightMax ) {statusLED = 5; // Dacă în cel mai de jos punct: Accesați Waiting High} else {currentBright = currentBright + increment ; // Altfel: Luminozitate mai mare}} else if (statusLED == 0) {// -0- Waiting at Average if (! StatusWaiting ) {// If not waiting: waitingTime = millis (); // Setați starea timpului de așteptareWaiting = true; // Începeți să așteptați} altfel dacă (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Dacă așteptare ȘI timeWaitAvg a trecut: statusWaiting = false; // Stop status statusLED = 7; // Setați statusLed la Se așteaptă actualizarea}}} i = 0; lastRound = milis (); // Setați când se termină ultima rundă. writeToLED (); // Scrieți toate datele pe LED-uri}}
Pasul 9: Produsul final
Cred că a funcționat bine. Cravata nu este prea groasă, rigidă, lungă sau grea, iar efectul de stea arată uimitor.
Recomandat:
Tie Time Keeper: 6 pași (cu imagini)
Tie Time Keeper: Este important să puteți spune ora, dar nu tuturor le place să poarte un ceas și să ne luăm smartphone-ul doar pentru a verifica ora pare un pic inutil. Îmi place să-mi păstrez mâinile libere de inele, brățări și ceasuri când lucrez într-un profesionist
Construiți un tablou de bord meteo folosind Dark Sky API: 5 pași (cu imagini)
Construiți un tablou de bord meteo folosind Dark Sky API: Dark Sky este specializat în prognoza și vizualizarea vremii. Cel mai tare aspect al Dark Sky este API-ul meteo pe care îl putem folosi pentru a prelua datele meteo de aproape oriunde în lume. Nu este doar vreme ploioasă sau însorită, ci temperat
Fotometru TESS-W Night Sky Luminozitate: 8 pași (cu imagini)
Fotometru TESS-W Night Sky Luminozitate: TESS-W este un fotometru conceput pentru a măsura și monitoriza continuu luminozitatea cerului nocturn pentru studii de poluare a luminii. A fost creat în timpul proiectului european STARS4ALL H2020 cu un design deschis (hardware și software). Fotometrul TESS-W
Holi-Tie: 8 pași (cu imagini)
Holi-Tie: Aceasta este Holi-Tie, o cravată festivă concepută pentru a fi purtată în timpul sărbătorilor. Bazat pe Ampli-Tie de Becky Stern care folosește o placă Flora, Holi-Tie folosește un microcontroler Circuit Python Express (CPX) pentru a conduce animațiile NeoPixel și
Soluție SKY CAM o cameră aeriană: 10 pași (cu imagini)
Soluția SKY CAM o cameră aeriană: acest instructiv vă va prezenta cum am realizat un sistem de telecomandă (semi-autonom) prin cablu Cam pentru proiectul meu de produse electronice GCSE la școală și, sperăm, să vă permit să vă puteți crea propriul sistem! Acesta este conceput ca un ghid dur