Innholdsfortegnelse:
- Trinn 1: Skjemaer og maskinvare
- Trinn 2: Gjør PCB -en vert for LED -lampene
- Trinn 3: Lag boksen
- Trinn 4: Klargjøring av bindingen
- Trinn 5: Liming av Fiberoptics
- Trinn 6: Å sette fiberoptikk gjennom slipset
- Trinn 7: Liming av fiberoptikk til slipset
- Trinn 8: Koden
- Trinn 9: Sluttprodukt
Video: Starry Sky Led Tie: 9 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
For en stund siden fant jeg et leke med fiberoptikk i en dollarbutikk, og begynte å tenke på hva jeg kunne gjøre med det.
En av de vanvittige ideene jeg hadde, var å knytte et slips med effekten av en stjernehimmel.
Jeg hadde fremdeles noen arduino pro mini -er, adafruit -brett og batterier som kunne passe dette prosjektet.
Så så snart jeg fant et fint bredt slips i en pantelåner i byen min og fant en eske som kunne passe til maskinvaren, bestemte jeg meg for å prøve den og prøve å bygge den.
Denne instruksen viser deg hvordan jeg gjorde det.
Den kjører på en arduino pro mini, adafruit powerboost 500 lader, emmerich icr 18650nh-sp og 5 hvite lysdioder. Koden gjør lysdiodens endring av lysstyrke tilfeldig. (De første 40 sekundene av videoen er 3x hastighet)
Trinn 1: Skjemaer og maskinvare
Jeg bruker følgende maskinvare:
- PCB med ishvite lysdioder og 220 Ohm motstander.
-Arduino pro mini (jeg brukte en knockoff)
-Adafruit Powerboost 500 lader
-Emmerich Li-ion accu ICR-18650NH-SP
- Optiske fibre (i forskjellige størrelser)
Trinn 2: Gjør PCB -en vert for LED -lampene
Jeg klippet en stripe av en PCB for å holde LED -lampene og brukte LED -pinnene til å lodde den til hovedkortet.
Koblet alle katodene (-) til GND, og brukte halvparten av pinnene til å lodde den fast på hovedkortet.
Koblet alle anodene (+) til motstander, og med kabler til arduinoen.
Hver LED må kobles til en av følgende PWM -porter: 3, 5, 6, 9, 10, 11
Dumt jeg gjorde mange feil med dette prosjektet og glemte å sjekke de riktige PWM -portene, så jeg måtte løse noen få senere. Testet med høy/lav, så jeg la merke til dette senere.
Jeg begynte med 7 lysdioder, men det var bare 6 PWM -porter, og en av lysdiodene jeg har løst, døde. Jeg beholdt bare de 5 fungerende LED -ene og bruker ikke den sjette.
Trinn 3: Lag boksen
Jeg brukte en Bosch GRO (som en Dremel) og en drill for å kutte ut formen på batteriet, knappen, mikro-usb-porten, hodene fra Arduino og optiske fibre. (bruk støvmaske!)
Limt batteriet til saken med 2 bånd.
Brukte skruer for å montere Adafruit -brettet og kretskortet.
Friksjon fra åpning og lukking ødela noen ledninger. Jeg måtte løse dem og bruke lim for å forhindre at det skjer igjen.
Trinn 4: Klargjøring av bindingen
Fjern sømmen fra den nederste delen av slipset for å passe til gummiplaten.
For å skjule maskinvaren og fortsatt ha tilgang til den om nødvendig bestemte jeg meg for å bruke en glidelås.
Jeg er ikke flink med symaskin, så min søte mamma satte en glidelås på baksiden av slipset.
Etter at det var gjort, limte jeg gummiplaten i slipset. Jeg var redd for å bruke for mye lim som ville mette stoffet og være synlig fra forsiden, så jeg prøvde å jevne det ut og ikke bruke for mye. Totalt sett ser det bra ut, men noen få steder la jeg merke til for mye eller for lite lim, fordi det kom gjennom stoffet eller ikke klistret stoffet veldig godt. Heldigvis er dette bare knapt synlig på nært hold i sterkt lys.
Boksen og slipset er nå ferdig. På tide å lime fiberoptikken!
Trinn 5: Liming av Fiberoptics
Leken hadde en stor bunt fiberoptiske ledninger som lett brøt sammen. Jeg prøvde å lime dem en etter en først, men la snart merke til at det ville være bedre å lage små bunter og feste dem til LED -en med en gang. Det ville gjøre det lettere å holde det stabilt til limet var tørt. Rotet den første LED -en med å finne ut av dette.
Sørg for å bruke et transparent lim! Den jeg brukte tørket veldig sakte og hurtigtørkende lim som jeg prøvde på den første LED -en ble hvit, noe som gjorde noen fibre fra den første LED -en mindre lys.
Jeg limte små svarte gummiplater for å forhindre at det lekker lys på toppen og for å skille lysdiodene.
Et av arkene forhindret saken i å lukke, så jeg la til et gummibånd for å holde lokket lukket.
Trinn 6: Å sette fiberoptikk gjennom slipset
Fra bunnen klemte jeg hull med en nål og la fibrene gjennom en etter en. Hver LED -fiber spres tilfeldig over slipset.
Jeg limte en svart stripe på baksiden som skulle gå helt opp til den mindre delen av slipset for å beholde boksens vekt, men etter at jeg la alle ledningene gjennom og kjente spenningen i ledningene bestemte jeg meg for å lime alt til slipset var en bedre idé og kuttet stripen av.
Siden fiberoptiske ledninger fra leken var så korte, var det vanskelig å montere dem over slipset. Jeg var begrenset til å plassere boksen og hadde det vanskelig å gjøre alt så flatt som jeg ville.
Trinn 7: Liming av fiberoptikk til slipset
Jeg limte alle fiberoptiske ledninger til gummiplaten for å forhindre at ledningene ble trukket ut av gummiplaten og for å gjøre slipset flatt.
For å sikre at jeg ikke limte klemmen til slipset da jeg la press på den, la jeg litt papir i mellom. Det ser ikke så bra ut, men fungerer bra. Og du ser det ikke når det er stengt.
Etter at limet hadde tørket, kuttet jeg av ledningene på forsiden og kuttet litt av gummiplaten rett over den høyeste tråden, for slipset var litt for langt.
Bilder med den hvite skjorten er tatt før jeg klipper av den siste gummibiten.
Trinn 8: Koden
Under koden jeg skrev for slipset.
Alle lysdioder har et angitt "gjennomsnitt" (faktisk ikke et gjennomsnitt, men en middels lysstyrke).
Så snart det når gjennomsnittet, bestemmer det med en sjanse 3/4 å gå til en lavere lysstyrke. Den angir også tilfeldig en ny minimumslysstyrke, maksimal lysstyrke, ventetid på minimum og maksimal lysstyrke og hastigheten den øker eller reduseres hver runde (1-255) fra 5 forhåndsinnstilte verdier. Deretter vil den gjøre en syklus til den når gjennomsnittet igjen. Bare 2 lysdioder kan være i en høy syklus samtidig.
Hver tilstand er representert med en heltallsverdi (1-7) som bestemmer om den går gjennomsnittlig lav, lav gjennomsnitt, venter lav, oppdaterer osv.
For informasjon om opplasting av kode til arduino, kan du se på www.arduino.cc
/ * Starry Sky Tie * * Dette er et manus for å tilfeldigvis falme 5 lysdioder fra et gjennomsnitt til en lavere * eller høyere lysstyrke med tilfeldige lavere, høyere og timinginnstillinger * for å se ut som en stjernehimmel når den brukes med fiberoptikk. * I dette tilfellet vil disse bli implementert uavgjort. * * Opp/ned sjanse = 1/4 opp, 3/4 ned, med maksimalt 2 * som går opp til maks samtidig. * * Gjennomsnittet forblir det samme. * Minimums-, maksimums- og timingalternativer endres tilfeldig * fra 5 alternativer hver gang en LED når gjennomsnittet igjen. * * Laget av Billy Jaspers, mai 2019. *
/ Deklarere pins
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Tidsvariabler
usignert lang aktuell tid; usignert lang ventetid [5]; unsigned long lastRound;
// LED -variabler
int brightMin [5] = {10, 10, 10, 10, 10}; // Minimum lysstyrke int brightAvg [5] = {200, 200, 200, 200, 200}; // Gjennomsnittlig lysstyrke int brightMax [5] = {240, 240, 240, 240, 240}; // Maksimal lysstyrke int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Ventetid int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Ventetid int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Ventetid int økning [5] = {2, 5, 4, 5, 2}; // Økning i lysstyrke int currentBright [5] = {200, 230, 210, 210, 235}; // Gjeldende lysstyrke
// LED -variabler Muligheter
int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimum lysstyrke muligheter int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimal lysstyrke muligheter int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Ventetid på muligheter for lav lysstyrke int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Ventetid på muligheter for høy lysstyrke int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Ventetid på gjennomsnittlige lysstyrke muligheter int incrementPos [5] = {2, 4, 5, 3, 1}; // økning i lysstyrke
// Variabler
bool oppstart = true; // Må startinnstillingene startes?
// Retningsvariabler
/* 0 = Venter i gjennomsnitt 1 = går gjennomsnitt til lav 2 = venter lav 3 = går lav til gjennomsnitt 4 = går gjennomsnitt til maks 5 = venter på maks 6 = går høyt til gjennomsnitt 7 = oppdaterer variabler*/ int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Venter LED -en?
// Tilfeldige variabler
long randomNumber; // Lenge for å lagre tilfeldig tall lang randomNumberTwo; // Lenge for å lagre det andre tilfeldige tallet
// tellere
int i = 0; // Teller for hovedsløyfe
ugyldig oppsett () {
Serial.begin (115200); // Start seriell randomSeed (analogRead (A0)); // Sett tilfeldig frø
// Deklarere utganger
pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, UTGANG); pinMode (LED05, OUTPUT); }
// Skriv data til lysdioder
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Hovedløkke
void loop () {if (startup) {// Startup settings lastRound = millis (); // Angi lastRound for boot writeToLED (); // Skriv startdata til LED -oppstart = false; // Slå av oppstart} currentTime = millis (); // Angi gjeldende tid
if (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Oppdaterer Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Angi tilfeldig verdi for minimum lysstyrke randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Angi tilfeldig verdi for maksimal lysstyrke randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Angi tilfeldig verdi for lav ventetid randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Angi tilfeldig verdi for høy ventetid randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Angi tilfeldig verdi for gjennomsnittlig ventetid randomNumber = random (5); inkrement = incrementPos [randomNumber]; // Angi tilfeldig verdi for inkrementverdi randomNumber = random (2); // Angi tilfeldig verdi for retning randomNumberTwo = random (2); // Angi tilfeldig verdi for retning hvis (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Hvis på det laveste punktet: Gå til Waiting Avg} else {currentBright = currentBright +økning ; // Else: Higher Brightness}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// If not waiting: waitingTime = millis (); // Angi ventetid statusWaiting = true; // Begynn å vente} annet hvis (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Hvis venter OG timeWaitAvg har passert: statusWaiting = false; // Stopp ventetid statusLED = 3; // Sett statusLed til Waiting for update}} else if (statusLED == 1) {// -1- Går gjennomsnitt til lav hvis (currentBright <= brightMin ) {statusLED = 2; // Hvis på det laveste punktet: Gå til Waiting Low} else {currentBright = currentBright -inkrement ; // Ellers: Lavere lysstyrke}} annet hvis (statusLED == 6) {// -6- Går maks til gjennomsnitt hvis (currentBright = timeWaitMax ) {// Hvis ventetiden OG timeWaitAvg har gått: statusWaiting = false; // Stopp ventetid statusLED = 6; // Sett statusLed til Waiting for update}} else if (statusLED == 4) {// -4- Går gjennomsnitt til maks hvis (currentBright > = brightMax ) {statusLED = 5; // Hvis på laveste punkt: Gå til Waiting High} else {currentBright = currentBright +økning ; // Ellers: Høyere lysstyrke}} annet hvis (statusLED == 0) {// -0- Venter i gjennomsnitt hvis (! StatusWaiting ) {// Hvis ikke venter: waitingTime = millis (); // Angi ventetid statusWaiting = true; // Begynn å vente} annet hvis (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Hvis venter OG timeWaitAvg har passert: statusWaiting = false; // Slutt å vente statusLED = 7; // Sett statusLed til Waiting for update}}} i = 0; lastRound = millis (); // Angi når siste runde er ferdig. writeToLED (); // Skriv alle dataene til lysdiodene}}
Trinn 9: Sluttprodukt
Jeg synes det fungerte bra. Slipset er ikke for tykt, stivt, langt eller tungt, og stjerneffekten ser fantastisk ut.
Anbefalt:
Grid Tie Inverter: 10 trinn (med bilder)
Grid Tie Inverter: Dette er et kjøttfullt prosjekt, så fest deg! Omformere med strømnett gjør det mulig å skyve strømmen inn i en stikkontakt, noe som er en fantastisk evne. Jeg synes kraftelektronikken og kontrollsystemene som er involvert i designen deres er interessante, så jeg bygde min egen. Denne rapporten er
Tie Time Keeper: 6 trinn (med bilder)
Tie Time Keeper: Det er viktig å kunne fortelle tiden, men ikke alle liker å ha på seg en klokke og ta med smarttelefonen vår bare for å sjekke at tiden virker litt unødvendig. Jeg liker å holde hendene fri for ringer, armbånd og klokker når jeg jobber hos en profesjonell
Sonic Bow Tie, av David Boldevin Engen: 4 trinn (med bilder)
Sonic Bow Tie, av David Boldevin Engen: En kompakt sløyfe, som er i stand til kontinuerlig å vise den omkringliggende lyden i fire forskjellige frekvenser på sine to speilede 4x5 LED -arrays.This tutorial vil gå gjennom hvordan du lager et sløyfe som får deg til å skille seg ut i enhver mengde. Hva du vil
Bygg et værpanel ved hjelp av Dark Sky API: 5 trinn (med bilder)
Bygg et værpanel ved hjelp av Dark Sky API: Dark Sky spesialiserer seg på værmelding og visualisering. Det kuleste aspektet ved Dark Sky er deres vær -API som vi kan bruke til å hente værdataene fra nesten hvor som helst i verden. Det er ikke bare vær eller regn, men temperatur
The Holi-Tie: 8 Steps (med bilder)
The Holi-Tie: Dette er Holi-Tie, en festlig slips designet for å brukes i ferien. Løst basert på Ampli-Tie av Becky Stern som bruker et Flora-bord, bruker Holi-Tie en Circuit Python Express (CPX) mikrokontroller for å drive NeoPixel-animasjonene og