Innholdsfortegnelse:

Starry Sky Led Tie: 9 trinn (med bilder)
Starry Sky Led Tie: 9 trinn (med bilder)

Video: Starry Sky Led Tie: 9 trinn (med bilder)

Video: Starry Sky Led Tie: 9 trinn (med bilder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Image
Image
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie
Starry Sky Led Tie

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

Skjematikk og maskinvare
Skjematikk og maskinvare
Skjematikk og maskinvare
Skjematikk 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

Gjør PCB -verten til LED -lampene
Gjør PCB -verten til LED -lampene
Gjør PCB -verten til LED -lampene
Gjør PCB -verten til LED -lampene
Gjør PCB -verten til LED -lampene
Gjør PCB -verten til 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

Making the Box
Making the Box
Making the Box
Making the Box
Making the Box
Making the Box
Making the Box
Making the Box

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

Forbereder slipset
Forbereder slipset
Forbereder slipset
Forbereder slipset
Forbereder slipset
Forbereder slipset

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

Liming av Fiberoptics
Liming av Fiberoptics
Liming av Fiberoptics
Liming av Fiberoptics
Liming av Fiberoptics
Liming av Fiberoptics
Liming av Fiberoptics
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

Å sette fiberoptikk gjennom slipset
Å sette fiberoptikk gjennom slipset
Å sette fiberoptikk gjennom slipset
Å sette fiberoptikk gjennom slipset
Å sette fiberoptikk gjennom slipset
Å 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

Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
Liming av fiberoptikk til slipset
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

Image
Image
Sluttprodukt
Sluttprodukt
Sluttprodukt
Sluttprodukt

Jeg synes det fungerte bra. Slipset er ikke for tykt, stivt, langt eller tungt, og stjerneffekten ser fantastisk ut.

Anbefalt: