Inhoudsopgave:

Led-das met sterrenhemel - Ajarnpa
Led-das met sterrenhemel - Ajarnpa

Video: Led-das met sterrenhemel - Ajarnpa

Video: Led-das met sterrenhemel - Ajarnpa
Video: Умный модульный wi-fi LED светильник - гексагональные панели с адресными светодиодами 2024, November
Anonim
Image
Image
Sterrenhemel Led Stropdas
Sterrenhemel Led Stropdas
Sterrenhemel Led Stropdas
Sterrenhemel Led Stropdas

Een tijdje geleden vond ik een kinderspeelgoed met glasvezel in een dollarwinkel en begon na te denken over wat ik ermee kon doen.

Een van de gekke ideeën die ik had, was een stropdas maken met het effect van een sterrenhemel.

Ik had nog wat arduino pro mini's, adafruit-borden en batterijen liggen die waarschijnlijk in dit project zouden passen.

Dus zodra ik een mooie brede stropdas vond in een pandjeshuis in mijn stad en een doos vond die bij de hardware zou passen, besloot ik ervoor te gaan en te proberen hem te bouwen.

Deze instructable laat je zien hoe ik het heb gemaakt.

Het werkt op een arduino pro mini, adafruit powerboost 500-oplader, emmerich icr 18650nh-sp en 5 witte LED's. De code zorgt ervoor dat de helderheid van de LED's willekeurig verandert. (De eerste 40 seconden van de video zijn 3x snelheid)

Stap 1: Schema's en hardware

Schema's en hardware
Schema's en hardware
Schema's en hardware
Schema's en hardware

Ik gebruik de volgende hardware:

- PCB met Ice white LED's en 220 Ohm weerstanden.

- Arduino pro mini (ik gebruikte een knockoff)

- Adafruit Powerboost 500-oplader

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

- Optische vezels (in verschillende maten)

Stap 2: Het maken van de PCB die de LED's host

De PCB laten hosten van de LED's
De PCB laten hosten van de LED's
De PCB laten hosten van de LED's
De PCB laten hosten van de LED's
De PCB laten hosten van de LED's
De PCB laten hosten van de LED's

Ik sneed een strook van een PCB af om de LED's vast te houden en gebruikte de LED-pinnen om het aan de hoofd-PCB te solderen.

Alle kathodes (-) op GND aangesloten en de helft van de pinnen gebruikt om het op de hoofdprint te solderen.

Alle anodes (+) aangesloten op weerstanden en met kabels op de arduino.

LED's moeten elk worden aangesloten op een van de volgende PWM-poorten: 3, 5, 6, 9, 10, 11

Silly me maakte veel fouten met dit project en vergat de juiste PWM-poorten te controleren, dus ik moest een paar later opnieuw solderen. Getest met Hoog/Laag, dus ik merkte dit pas later.

Ik begon met 7 LED's, maar er waren slechts 6 PWM-poorten en een van de LED's die ik opnieuw had gesoldeerd, stierf. Ik heb gewoon de 5 werkende LED's behouden en gebruik de 6e niet.

Stap 3: De doos maken

De doos maken
De doos maken
De doos maken
De doos maken
De doos maken
De doos maken
De doos maken
De doos maken

Ik gebruikte een Bosch GRO (zoals een Dremel) en een boormachine om de vorm van de batterij, de knop, de micro-usb-poort, de headers van de Arduino en de optische vezels uit te snijden. (gebruik een stofmasker!)

Met 2 banden de batterij op de behuizing gelijmd.

Gebruikte schroeven om het Adafruit-bord en de PCB te monteren.

Door wrijving bij het openen en sluiten zijn enkele draden beschadigd. Ik moest ze opnieuw solderen en lijm gebruiken om te voorkomen dat het opnieuw zou gebeuren.

Stap 4: De stropdas voorbereiden

De stropdas voorbereiden
De stropdas voorbereiden
De stropdas voorbereiden
De stropdas voorbereiden
De stropdas voorbereiden
De stropdas voorbereiden

Het stiksel van het onderste deel van de stropdas verwijderd om op het rubberen vel te passen.

Om de hardware te verbergen en er indien nodig nog steeds toegang toe te hebben, besloot ik een ritssluiting te gebruiken.

Ik ben niet goed met een naaimachine, dus mijn lieve moeder deed een rits aan de achterkant van de stropdas.

Daarna heb ik het rubberen vel in de das gelijmd. Ik was bang om te veel lijm te gebruiken die de stof zou verzadigen en vanaf de voorkant zichtbaar zou zijn, dus ik probeerde het gelijkmatig te maken en niet te veel te gebruiken. Over het algemeen ziet het er goed uit, maar op een paar plaatsen merkte ik te veel of te weinig lijm op, omdat het door de stof kwam of de stof niet goed plakte. Gelukkig is dit bij fel licht van dichtbij maar nauwelijks zichtbaar.

De doos en stropdas zijn nu klaar. Tijd om de glasvezel te lijmen!

Stap 5: De glasvezel verlijmen

De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen
De glasvezel verlijmen

Het speelgoed had één grote bundel glasvezeldraden die gemakkelijk uit elkaar vielen. Ik probeerde ze eerst een voor een te lijmen, maar merkte al snel dat het beter zou zijn om kleine bundels te maken en die in één keer op de LED te plakken. Dat zou het gemakkelijker maken om het stabiel te houden totdat de lijm droog was. Heb de eerste LED verknald om dit uit te zoeken.

Zorg ervoor dat u een transparante lijm gebruikt! Degene die ik gebruikte droogde erg langzaam en de sneldrogende lijm die ik op de eerste LED probeerde werd wit, waardoor sommige vezels van de eerste LED minder fel waren.

Ik heb kleine zwarte rubberen vellen gelijmd om te voorkomen dat er licht naar boven lekt en om de LED's te scheiden.

Een van de vellen verhinderde het sluiten van de hoes, dus ik voegde een rubberen band toe om de hoes dicht te houden.

Stap 6: Fiberoptics door de stropdas steken

Glasvezel door de das halen
Glasvezel door de das halen
Glasvezel door de das halen
Glasvezel door de das halen
Glasvezel door de das halen
Glasvezel door de das halen

Ik begon aan de onderkant en kneep gaten met een naald en stak de vezels één voor één door. De vezels van elke LED verspreiden zich willekeurig over de stropdas.

Ik heb een zwarte strook op de achterkant gelijmd die helemaal tot aan het kleinere deel van de stropdas moest gaan om het gewicht van de doos te behouden, maar nadat ik alle draden door had en de spanning van de draden voelde, besloot ik te lijmen alles aan de stropdas was een beter idee en sneed de strook af.

Omdat de glasvezeldraden van het speelgoed zo kort waren, was het moeilijk om ze over de stropdas te passen. Ik was beperkt in het plaatsen van de doos en had moeite om alles zo plat te maken als ik wilde.

Stap 7: Fiberoptics aan de stropdas lijmen

Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen
Glasvezel aan de stropdas lijmen

Ik heb alle glasvezeldraden op het rubbervel gelijmd om te voorkomen dat de draden uit het rubbervel zouden worden getrokken en om de das plat te maken.

Om er zeker van te zijn dat ik de klem niet aan de stropdas plakte als ik er druk op uitoefende ik er wat papier tussen. Het ziet er niet geweldig uit maar werkt goed. En je ziet het niet als het gesloten is.

Nadat de lijm was opgedroogd heb ik de draden aan de voorkant afgeknipt en een stukje van het rubber vel net boven de hoogste draad afgesneden, omdat de das iets te lang was.

Foto's met het witte shirt zijn gemaakt voordat ik dat laatste stukje rubber eraf sneed.

Stap 8: De code

Hieronder de code die ik voor de stropdas heb geschreven.

Alle LED's hebben een ingestelde "gemiddelde" (niet echt een gemiddelde maar een gemiddelde helderheid).

Zodra hij dat gemiddelde bereikt, zal hij met kans 3/4 besluiten om naar een lagere helderheid te gaan. Het stelt ook willekeurig een nieuwe minimale helderheid, maximale helderheid, wachttijd voor minimale en maximale helderheid in en de snelheid waarmee deze elke ronde (1-255) toeneemt of afneemt vanaf 5 vooraf ingestelde waarden. Dan zal het een cyclus doen totdat het weer het gemiddelde bereikt. Er kunnen slechts 2 LED's tegelijkertijd in een hoge cyclus zijn.

Elke status wordt weergegeven door een geheel getal (1-7) dat bepaalt of het gemiddeld laag, laag gemiddeld, laag wachtend, bijwerken, enz.

Kijk voor informatie over het uploaden van code naar de arduino op www.arduino.cc

/* Starry Sky Tie * * Dit is een script om 5 LED's willekeurig te laten vervagen van een gemiddelde naar een lagere * of hogere helderheid met willekeurige lagere, hogere en timinginstellingen * om eruit te zien als een sterrenhemel bij gebruik met glasvezel. * In dit geval worden deze geïmplementeerd in een gelijkspel. * * Kans op omhoog/omlaag = 1/4 omhoog, 3/4 omlaag, met een maximum van 2 * tegelijkertijd tot max. * * Gemiddeld blijft hetzelfde. * Minimum, maximum en timing opties veranderen willekeurig * van 5 opties elke keer dat een LED het gemiddelde weer bereikt. * * Gemaakt door Billy Jaspers, mei 2019. *

/ Declareer pinnen

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

// Tijdvariabelen

niet-ondertekende lange currentTime; ongetekende lange wachttijd[5]; ongetekende lange laatste ronde;

// LED-variabelen

int helderMin [5] = { 10, 10, 10, 10, 10 }; // Minimale helderheid int brightAvg [5] = {200, 200, 200, 200, 200}; // Gemiddelde helderheid int brightMax [5] = {240, 240, 240, 240, 240}; // Maximale helderheid int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Wachttijd int timeWaitAvg [5] = { 5000, 5000, 5000, 5000, 5000 }; // Wachttijd int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Wachttijd int increment [5] = { 2, 5, 4, 5, 2 }; // Verhoging van de helderheid int currentBright [5]= {200, 230, 210, 210, 235}; // Huidige helderheid

// Mogelijkheden LED-variabelen

int helderMinPos[5] = { 5, 20, 40, 5, 20 }; // Minimale helderheidsmogelijkheden int brightMaxPos[5] = { 240, 245, 230, 225, 245 }; // Maximale helderheidsmogelijkheden int timeLowPos[5] = { 3000, 5000, 4000, 2000, 1000 }; // Wachttijd bij lage helderheid mogelijkheden int timeHighPos[5] = {3000, 1000, 500, 2000, 4000}; // Wachttijd bij hoge helderheidsmogelijkheden int timeAvgPos[5] = {3000, 5000, 4000, 7000, 8000}; // Wachttijd op gemiddelde helderheidsmogelijkheden int incrementPos [5] = { 2, 4, 5, 3, 1 }; // toename in helderheidsmogelijkheden

// Variabelen

bool opstarten = waar; // Moeten de startinstellingen worden gestart?

// Directionele variabelen

/* 0 = Gemiddeld wachten 1 = Gem naar laag gaan 2 = wachten Laag 3 = laag gaan naar Avg 4 = Avg gaan naar Max 5 = wachten op Max 6 = hoog gaan naar Avg 7 = Variabelen bijwerken*/int statusLED[5] = { 0, 0, 0, 0, 0 }; int bedragHighLED = 0; int verversingssnelheid = 50; bool statusWaiting[5] = { false, false, false, false, false}; // Wacht de Led?

// Willekeurige variabelen

lang willekeurig nummer; // Lang om willekeurig nummer op te slaan, lang randomNumberTwo; // Lang om het tweede willekeurige getal op te slaan

// tellers

int ik = 0; // Teller voor hoofdlus

ongeldige setup() {

Serieel.begin (115200); // Start seriële randomSeed (analogRead (A0)); // Stel willekeurig zaad in

// Uitgangen declareren

pinMode (LED01, UITGANG); pinMode (LED02, UITGANG); pinMode (LED03, UITGANG); pinMode (LED04, UITGANG); pinMode (LED05, UITGANG); }

// Schrijf gegevens naar LED's

void writeToLED(){analogeWrite(LED01, currentBright[0]); analoogWrite(LED02, huidigeBright[1]); analoogWrite(LED03, huidigeBright[2]); analogWrite(LED04, currentBright[3]); analogWrite(LED05, currentBright[4]); }

// Hoofdlus

void loop() {if (opstarten){ // Opstartinstellingen lastRound = millis(); // Stel lastRound in voor boot writeToLED(); // Schrijf startgegevens naar LED-opstart = false; // Schakel opstarten uit} currentTime = millis (); // Stel huidige tijd in

if (currentTime - lastRound >= refreshRate){

for (i=0;i<5;i++){ if (statusLED == 7){ // -7- Led bijwerken randomNumber = random(5); brightMin = brightMinPos[willekeurig getal]; // Stel willekeurige waarde in voor minimale helderheid randomNumber = willekeurig (5); brightMax = brightMaxPos[willekeurig getal]; // Stel willekeurige waarde in voor maximale helderheid randomNumber = willekeurig (5); timeWaitLow = timeLowPos[randomNumber]; // Stel een willekeurige waarde in voor een lage wachttijd randomNumber = random (5); timeWaitMax = timeHighPos[randomNumber]; // Stel willekeurige waarde in voor hoge wachttijd randomNumber = willekeurig (5); timeWaitAvg = timeAvgPos[randomNumber]; // Stel willekeurige waarde in voor gemiddelde wachttijd randomNumber = random (5); increment = incrementPos[randomNumber]; // Stel willekeurige waarde in voor verhogingswaarde randomNumber = willekeurig (2); // Stel een willekeurige waarde in voor de richting randomNumberTwo = willekeurig (2); // Stel willekeurige waarde in voor richting if (randomNumber == 1 && randomNumberTwo == 0 && hoeveelheidHighLED = brightAvg){ statusLED = 0; // Indien op het laagste punt: Ga naar Wachtgemiddelde }else{ currentBright = currentBright+increment; // Else: Hogere helderheid } }else if (statusLED == 2){ // -2- Wachten Low if (!statusWaiting){ // Indien niet wachten: waitTime = millis(); // Wachttijdstatus instellenWaiting = true; // Begin met wachten }else if(statusWaiting && currentTime-waitingTime >= timeWaitLow){ // Als wachten EN timeWaitAvg is verstreken: statusWaiting = false; // Stop met wachten statusLED = 3; // Stel statusLed in op Wachten op update } }else if (statusLED == 1){ // -1- Going Avg to Low if (currentBright <= brightMin){ statusLED = 2; // Indien op het laagste punt: Ga naar Waiting Low }else{ currentBright = currentBright-increment; // Else: Lagere helderheid } }else if (statusLED == 6){ // -6- Gaat Max naar Avg if (currentBright = timeWaitMax){ // Als wachten EN timeWaitAvg is verstreken: statusWaiting = false; // Stop met wachten statusLED = 6; // Stel statusLed in op Wachten op update } }else if (statusLED == 4){ // -4- Avg gaan naar Max if (currentBright >= brightMax){ statusLED = 5; // Indien op het laagste punt: Ga naar High Waiting }else{ currentBright = currentBright+increment; // Else: hogere helderheid } }else if (statusLED == 0){ // -0- Waiting at Average if (!statusWaiting){ // Indien niet wachten: waitTime = millis(); // Wachttijdstatus instellenWaiting = true; // Begin met wachten }else if(statusWaiting && currentTime-waitingTime >= timeWaitAvg){ // Als wachten EN timeWaitAvg is verstreken: statusWaiting = false; // Stop met wachten statusLED = 7; // Stel statusLed in op Wachten op update } } } i=0; lastRound = millis(); // Stel in wanneer de laatste ronde is afgelopen. schrijvenToLED(); // Schrijf alle gegevens naar de LED's } }

Stap 9: Eindproduct

Image
Image
Eindproduct
Eindproduct
Eindproduct
Eindproduct

Ik denk dat het goed gelukt is. De stropdas is niet te dik, stug, lang of zwaar en het stereffect ziet er geweldig uit.

Aanbevolen: