Indholdsfortegnelse:

Starry Sky Led Tie: 9 trin (med billeder)
Starry Sky Led Tie: 9 trin (med billeder)

Video: Starry Sky Led Tie: 9 trin (med billeder)

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

For et stykke tid siden fandt jeg et barns legetøj med fiberoptik i en dollarbutik og begyndte at tænke på, hvad jeg kunne gøre med det.

En af de skøre ideer, jeg havde, var at lave et slips med virkningen af en stjernehimmel.

Jeg havde stadig nogle arduino pro mini'er, adafruit boards og batterier liggende, der sandsynligvis ville passe til dette projekt.

Så så snart jeg fandt et flot bredt slips i en pantelåner i min by og fandt en æske, der kunne passe til hardwaren, besluttede jeg at gå efter det og prøve at bygge det.

Denne instruktive viser dig, hvordan jeg lavede det.

Den kører på en arduino pro mini, adafruit powerboost 500 oplader, emmerich icr 18650nh-sp og 5 hvide lysdioder. Koden gør LED'ens ændring af lysstyrke tilfældig. (De første 40 sekunder af videoen er 3x hastighed)

Trin 1: Skemaer og hardware

Skemaer og hardware
Skemaer og hardware
Skemaer og hardware
Skemaer og hardware

Jeg bruger følgende hardware:

- PCB med ishvide lysdioder og 220 Ohm modstande.

-Arduino pro mini (jeg brugte en knockoff)

-Adafruit Powerboost 500 oplader

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

- Optiske fibre (i forskellige størrelser)

Trin 2: Gør printpladen vært for LED'erne

Gør PCB til at være vært for LED'erne
Gør PCB til at være vært for LED'erne
Gør PCB til at være vært for LED'erne
Gør PCB til at være vært for LED'erne
Gør PCB til at være vært for LED'erne
Gør PCB til at være vært for LED'erne

Jeg skar en strimmel af et printkort til at holde LED'erne og brugte LED -benene til at lodde det til hovedkortet.

Tilsluttede alle katoderne (-) til GND og brugte halvdelen af stifterne til at lodde den fast på hovedkortet.

Tilsluttede alle anoderne (+) til modstande og med kabler til arduinoen.

Lysdioder skal hver tilsluttes en af følgende PWM -porte: 3, 5, 6, 9, 10, 11

Dumt jeg lavede mange fejl med dette projekt og glemte at kontrollere de korrekte PWM -porte, så jeg var nødt til at løse et par senere. Testet med Høj/Lav, så jeg bemærkede dette først senere.

Jeg startede med 7 LED'er, men der var kun 6 PWM -porte, og en af LED'erne, jeg resolderede, døde. Jeg har lige beholdt de 5 fungerende LED'er og bruger ikke den 6..

Trin 3: Lav boksen

At lave boksen
At lave boksen
At lave boksen
At lave boksen
At lave boksen
At lave boksen
At lave boksen
At lave boksen

Jeg brugte en Bosch GRO (som en Dremel) og en boremaskine til at afskære formen på batteriet, knappen, mikro-usb-porten, overskrifterne fra Arduino og de optiske fibre. (brug en støvmaske!)

Limet batteriet til kassen med 2 bånd.

Brugte skruer til at montere Adafruit -kortet og printkortet.

Friktion ved åbning og lukning beskadigede nogle ledninger. Jeg var nødt til at løse dem op og bruge lim for at forhindre det i at ske igen.

Trin 4: Forberedelse af slipset

Forberedelse af slipset
Forberedelse af slipset
Forberedelse af slipset
Forberedelse af slipset
Forberedelse af slipset
Forberedelse af slipset

Syningen blev fjernet fra den nederste del af slipset for at passe til gummipladen.

For at skjule hardwaren og stadig kunne få adgang til den om nødvendigt besluttede jeg mig for at bruge en lynlås.

Jeg har det ikke godt med en symaskine, så min søde mor satte en lynlås bag på slipset.

Efter at det var gjort, limede jeg gummipladen i slipset. Jeg var bange for at bruge for meget lim, der ville mætte stoffet og være synligt forfra, så jeg forsøgte at udjævne det og ikke bruge for meget. Generelt ser det godt ud, men nogle få steder lagde jeg mærke til for meget eller for lidt lim, fordi det kom gennem stoffet eller ikke klæbte stoffet særlig godt. Dette er heldigvis kun næsten ikke synligt på tæt afstand i stærkt lys.

Kassen og slipset er nu færdige. Tid til at lime fiberoptikken!

Trin 5: Limning af Fiberoptics

Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics
Limning af Fiberoptics

Legetøjet havde et stort bundt fiberoptiske ledninger, der let brød fra hinanden. Jeg prøvede først at lime dem en efter en, men bemærkede snart, at det ville være bedre at lave små bundter og sætte dem fast på LED'en på én gang. Det ville gøre det lettere at holde det stabilt, indtil limen var tør. Forvirrede den første LED ved at finde ud af dette.

Sørg for at bruge en gennemsigtig lim! Den, jeg brugte, tørrede meget langsomt, og den hurtigtørrende lim, jeg prøvede på den første LED, blev hvid, hvilket gjorde nogle fibre fra den første LED mindre lyse.

Jeg limede små sorte gummiplader for at forhindre, at lys lækker ovenpå og adskiller LED'erne.

Et af arkene forhindrede sagen i at lukke, så jeg tilføjede et gummibånd for at holde låget lukket.

Trin 6: Sæt fiberoptik gennem slipset

At sætte fiberoptik gennem slipset
At sætte fiberoptik gennem slipset
At sætte fiberoptik gennem slipset
At sætte fiberoptik gennem slipset
At sætte fiberoptik gennem slipset
At sætte fiberoptik gennem slipset

Fra bunden kneb jeg huller med en nål og satte fibrene igennem en efter en. Hver LED's fibre spredes tilfældigt over slipset.

Jeg limede en sort strimmel på bagsiden, der skulle gå helt op til den mindre del af slipset for at beholde æskens vægt, men da jeg lagde alle ledninger igennem og følte spændingen i ledningerne, besluttede jeg at lime alt til slipset var en bedre idé og skar strimlen af.

Da fiberoptiske ledninger fra legetøjet var så korte, var det svært at montere dem over slipset. Jeg var begrænset til at placere kassen og havde svært ved at gøre alt så fladt, som jeg ville.

Trin 7: Limning af fiberoptik til slipset

Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset
Limning af fiberoptik til slipset

Jeg limede alle fiberoptiske ledninger til gummipladen for at forhindre, at ledningerne trækkes ud af gummipladen og for at gøre slipset fladt.

For at sikre, at jeg ikke limede klemmen til slipset, da jeg lagde pres på det, lagde jeg noget papir imellem. Det ser ikke så godt ud, men fungerer godt. Og man ser det ikke, når det er lukket.

Efter at limen var tørret, skar jeg ledningerne på forsiden af og skar lidt af gummipladen lige over den højeste tråd, fordi slipset var lidt for langt.

Fotos med den hvide skjorte er taget, før jeg skærer den sidste smule gummi af.

Trin 8: Koden

Nedenfor koden, jeg skrev til slipset.

Alle lysdioder har et sæt "gennemsnit" (faktisk ikke et gennemsnit, men en midterste lysstyrke).

Så snart det når det gennemsnit, vil det med en chance 3/4 beslutte at gå til en lavere lysstyrke. Det indstiller også tilfældigt en ny minimumslysstyrke, maksimal lysstyrke, ventetid på minimum og maksimal lysstyrke, og hastigheden øges eller reduceres hver runde (1-255) fra 5 forudindstillede værdier. Derefter vil den lave en cyklus, indtil den når gennemsnittet igen. Kun 2 lysdioder kan være i en høj cyklus på samme tid.

Hver tilstand er repræsenteret ved en heltalværdi (1-7), der bestemmer, om den går medg-lav, lav-avg, venter lav, opdaterer osv.

For information om upload af kode til arduino, kan du kigge på www.arduino.cc

/ * Starry Sky Tie * * Dette er et script til tilfældigt at falme 5 lysdioder fra et gennemsnit til en lavere * eller højere lysstyrke med tilfældige lavere, højere og timingindstillinger * for at ligne en stjernehimmel, når den bruges med fiberoptik. * I dette tilfælde vil disse blive implementeret uafgjort. * * Op/ned chance = 1/4 op, 3/4 ned, med maksimalt 2 * gå op til max på samme tid. * * Gennemsnit forbliver det samme. * Minimum, maksimum og timing ændres tilfældigt * fra 5 muligheder hver gang en LED når gennemsnittet igen. * * Oprettet af Billy Jaspers, maj 2019. *

/ Deklarere pins

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

// Tidsvariabler

usigneret lang currentTime; usigneret 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}; // Gennemsnitlig 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 stigning [5] = {2, 5, 4, 5, 2}; // Forøgelse i lysstyrke int currentBright [5] = {200, 230, 210, 210, 235}; // Aktuel lysstyrke

// LED -variabler Muligheder

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimumsmuligheder for lysstyrke int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maksimal lysstyrke muligheder int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Ventetid på muligheder for lav lysstyrke int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Ventetid på muligheder med høj lysstyrke int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Ventetid på gennemsnitlige lysstyrke muligheder int incrementPos [5] = {2, 4, 5, 3, 1}; // stigning i lysstyrke muligheder

// Variabler

bool opstart = sand; // Skal startindstillingerne startes?

// Retningsvariabler

/* 0 = Venter i gennemsnit 1 = går gennemsnit til lav 2 = venter lav 3 = går lav til gennemsnit 4 = går gennemsnit til maks. 5 = venter på maks. 6 = går højt til gennemsnit 7 = opdaterer variabler*/ int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {falsk, falsk, falsk, falsk, falsk}; // Venter LED’en?

// Tilfældige variabler

lang randomNumber; // Langt til at gemme tilfældigt tal lang randomNumberTwo; // Længe for at gemme det andet tilfældige tal

// tællere

int i = 0; // Tæller til hovedsløjfe

ugyldig opsætning () {

Serial.begin (115200); // Start seriel randomSeed (analogRead (A0)); // Indstil tilfældigt frø

// Angiv output

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); 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]); }

// Hovedsløjfe

void loop () {if (opstart) {// Startindstillinger lastRound = millis (); // Indstil lastRound for boot writeToLED (); // Skriv startdata til LED -opstart = falsk; // Sluk for opstart} currentTime = millis (); // Indstil det aktuelle tidspunkt

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Opdatering af Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Indstil tilfældig værdi for minimum lysstyrke randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Indstil tilfældig værdi for maksimal lysstyrke randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Indstil tilfældig værdi for lav ventetid randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Indstil tilfældig værdi for høj ventetid randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Indstil tilfældig værdi for gennemsnitlig ventetid randomNumber = random (5); inkrement = incrementPos [randomNumber]; // Indstil tilfældig værdi for stigningsværdi randomNumber = random (2); // Indstil tilfældig værdi for retning randomNumberTwo = random (2); // Indstil tilfældig værdi for retning hvis (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Hvis det er på det laveste punkt: Gå til Waiting Avg} else {currentBright = currentBright +stigning ; // Ellers: Højere lysstyrke}} ellers hvis (statusLED == 2) {// -2- Ventende lav hvis (! StatusWaiting ) {// Hvis ikke venter: waitingTime = millis (); // Indstil ventetid statusWaiting = true; // Start at vente} ellers hvis (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Hvis ventning OG timeWaitAvg er bestået: statusWaiting = false; // Stop ventestatusLED = 3; // Indstil statusLed til Venter på opdatering}} ellers hvis (statusLED == 1) {// -1- Går gennemsnit til lav hvis (currentBright <= brightMin ) {statusLED = 2; // Hvis det er på laveste punkt: Gå til Waiting Low} ellers {currentBright = currentBright -forøgelse ; // Ellers: Lavere lysstyrke}} ellers hvis (statusLED == 6) {// -6- Går Max til Gns hvis (currentBright = timeWaitMax ) {// Hvis ventetiden OG timeWaitAvg er gået: statusWaiting = falsk; // Stop ventestatusLED = 6; // Indstil statusLed til Venter på opdatering}} ellers hvis (statusLED == 4) {// -4- Går i gennemsnit til Max hvis (currentBright > = brightMax ) {statusLED = 5; // Hvis det er på det laveste punkt: Gå til Waiting High} ellers {currentBright = currentBright +stigning ; // Ellers: Højere lysstyrke}} ellers hvis (statusLED == 0) {// -0- Venter i gennemsnit hvis (! StatusWaiting ) {// Hvis ikke venter: waitingTime = millis (); // Indstil ventetid statusWaiting = true; // Start at vente} ellers hvis (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Hvis ventetiden OG timeWaitAvg er gået: statusWaiting = false; // Stop ventestatusLED = 7; // Indstil statusLed til Venter på opdatering}}} i = 0; lastRound = millis (); // Indstil når sidste runde er færdig. writeToLED (); // Skriv alle data til lysdioderne}}

Trin 9: Slutprodukt

Image
Image
Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt

Jeg synes, det fungerede godt. Slipset er ikke for tykt, stift, langt eller tungt, og stjerneeffekten ser fantastisk ud.

Anbefalede: