Indholdsfortegnelse:
- Trin 1: Skemaer og hardware
- Trin 2: Gør printpladen vært for LED'erne
- Trin 3: Lav boksen
- Trin 4: Forberedelse af slipset
- Trin 5: Limning af Fiberoptics
- Trin 6: Sæt fiberoptik gennem slipset
- Trin 7: Limning af fiberoptik til slipset
- Trin 8: Koden
- Trin 9: Slutprodukt
Video: Starry Sky Led Tie: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
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
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
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
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
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
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
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
Jeg synes, det fungerede godt. Slipset er ikke for tykt, stift, langt eller tungt, og stjerneeffekten ser fantastisk ud.
Anbefalede:
Appstyret farve sky: 7 trin (med billeder)
Appstyret farve sky: Hej, i denne instruktive viser jeg dig, hvordan du bygger en rumbelysning fra et grussti. Det hele kan styres via WLAN med en app. Https://youtu.be/NQPSnQKSuoUT Der var nogle problemer med projektet. Men i sidste ende kan du klare det med
Grid Tie Inverter: 10 trin (med billeder)
Grid Tie Inverter: Dette er et kødfuldt projekt, så spænd op! Inverter med netbinder gør det muligt at skubbe strømmen ind i en stikkontakt, hvilket er en fantastisk evne. Jeg synes, at magtelektronik og kontrolsystemer, der er involveret i deres design, er interessante, så jeg byggede mit eget. Denne rapport er
Tie Time Keeper: 6 trin (med billeder)
Tie Time Keeper: Det er vigtigt at kunne fortælle tiden, men ikke alle kan lide at bære et ur og tage vores din smartphone bare for at kontrollere, at tiden virker lidt unødvendig. Jeg kan godt lide at holde mine hænder fri for ringe, armbånd og ure, når jeg arbejder hos en professionel
Sonic Bow Tie, af David Boldevin Engen: 4 trin (med billeder)
Sonic Bow Tie, af David Boldevin Engen: En kompakt sløjfe, der kontinuerligt kan vise den omgivende lyd i fire forskellige frekvenser på sine to spejlede 4x5 LED -arrays. Denne vejledning gennemgår, hvordan man laver en sløjfe, der får dig til at skille sig ud i enhver mængde. Hvad vil du
Holi-Tie: 8 trin (med billeder)
The Holi-Tie: Dette er Holi-Tie, et festligt slips designet til at blive brugt i løbet af ferien. Løst baseret på Ampli-Tie af Becky Stern, der bruger et Flora-bord, bruger Holi-Tie en Circuit Python Express (CPX) mikrokontroller til at drive NeoPixel-animationer og