Inhoudsopgave:
- Stap 1: Schema's en hardware
- Stap 2: Het maken van de PCB die de LED's host
- Stap 3: De doos maken
- Stap 4: De stropdas voorbereiden
- Stap 5: De glasvezel verlijmen
- Stap 6: Fiberoptics door de stropdas steken
- Stap 7: Fiberoptics aan de stropdas lijmen
- Stap 8: De code
- Stap 9: Eindproduct
Video: Led-das met sterrenhemel - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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
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
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
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
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
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
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
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
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:
Een IoT Halloween-pompoen - Bedien LED's met een Arduino MKR1000 en Blynk-app ???: 4 stappen (met afbeeldingen)
Een IoT Halloween-pompoen | Bedien LED's Met een Arduino MKR1000 en Blynk App ???: Hallo allemaal, Een paar weken geleden was het Halloween en volgens de traditie heb ik een mooie pompoen uitgesneden voor op mijn balkon. Maar toen ik mijn pompoen buiten had, realiseerde ik me dat het best vervelend was om elke avond de deur uit te moeten om de kaars aan te steken. En ik
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Start uw diavoorstelling met vakantiefoto's met een vleugje magie! 9 stappen (met afbeeldingen)
Lanceer uw diavoorstelling met vakantiefoto's met een vleugje magie!: In de loop der jaren heb ik de gewoonte ontwikkeld om een klein beeldje mee te nemen op reis: ik koop vaak een kleine, lege artoy (zoals die op de foto) en verf het past bij de vlag en het thema van het land dat ik bezoek (in dit geval Sicilië). T