Taula de continguts:

Corbata de cel estrellat: 9 passos (amb imatges)
Corbata de cel estrellat: 9 passos (amb imatges)

Vídeo: Corbata de cel estrellat: 9 passos (amb imatges)

Vídeo: Corbata de cel estrellat: 9 passos (amb imatges)
Vídeo: Основные ошибки при возведении перегородок из газобетона #5 2024, De novembre
Anonim
Image
Image
Corbata Led Starry Sky
Corbata Led Starry Sky
Corbata Led Starry Sky
Corbata Led Starry Sky

Fa un temps vaig trobar una joguina infantil amb fibra òptica a una botiga de dòlars i vaig començar a pensar què hi podia fer.

Una de les idees esbojarrades que tenia, era fer una corbata amb l’efecte d’un cel estrellat.

Encara tenia algunes arduino pro mini, taules adafruit i bateries que probablement s’adaptarien a aquest projecte.

Així que, tan bon punt vaig trobar una bona corbata ampla en una casa d’empenyorament de la meva ciutat i vaig trobar una caixa que s’adaptava al maquinari, vaig decidir anar-hi i intentar construir-lo.

Aquest instructiu us mostra com ho he fet.

Funciona amb un arduino pro mini, carregador adafruit powerboost 500, emmerich icr 18650nh-sp i 5 LED blancs. El codi fa que la brillantor del canvi del LED sigui aleatòria. (Els primers 40 segons del vídeo tenen una velocitat de 3 vegades)

Pas 1: esquemes i maquinari

Esquemes i maquinari
Esquemes i maquinari
Esquemes i maquinari
Esquemes i maquinari

Estic fent servir el maquinari següent:

- PCB amb LEDs blancs de gel i resistències de 220 Ohm.

- Arduino pro mini (he utilitzat un knockoff)

Carregador Adafruit Powerboost 500

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

- Fibres òptiques (de diferents mides)

Pas 2: Feu que els PCB allotgin els LED

Fent que els PCB allotgin els LED
Fent que els PCB allotgin els LED
Fent que els PCB allotgin els LED
Fent que els PCB allotgin els LED
Fent que els PCB allotgin els LED
Fent que els PCB allotgin els LED

Vaig tallar una tira d’un PCB per subjectar els LED i vaig utilitzar els pins LED per soldar-lo al PCB principal.

Es va connectar tots els càtodes (-) a GND i es va utilitzar la meitat dels pins per soldar-lo enganxat al PCB principal.

Connectat tots els ànodes (+) a resistències i amb cables a l’arduino.

Els LED s'han de connectar cadascun a un dels ports PWM següents: 3, 5, 6, 9, 10, 11

Silly me va cometre molts errors amb aquest projecte i em vaig oblidar de comprovar els ports PWM correctes, així que vaig haver de tornar a vendre uns quants més tard. Provat amb Alt / Baix, així que només ho vaig notar més tard.

Vaig començar amb 7 LED, però només hi havia 6 ports PWM i un dels LED que heu tornat a soldar va morir. Acabo de mantenir els 5 LEDs que funcionen i no estic utilitzant el sisè.

Pas 3: fer la caixa

Fent la caixa
Fent la caixa
Fent la caixa
Fent la caixa
Fent la caixa
Fent la caixa
Fent la caixa
Fent la caixa

Vaig utilitzar un Bosch GRO (com un Dremel) i un trepant per retallar la forma de la bateria, el botó, el port micro-usb, les capçaleres de l’Arduino i les fibres òptiques. (feu servir una màscara antipols).

Enganxem la bateria a la caixa amb 2 bandes.

Cargols usats per muntar la placa Adafruit i el PCB.

La fricció oberta i tancada va danyar alguns cables. Vaig haver de tornar a vendre-les i fer servir cola per evitar que tornés a passar.

Pas 4: Preparació de la corbata

Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata

S'ha eliminat la costura de la part inferior de la corbata per adaptar-la a la làmina de goma.

Per amagar el maquinari i poder accedir-hi si calia, vaig decidir utilitzar una cremallera.

No estic bé amb una màquina de cosir, així que la meva dolça mare va posar una cremallera a la part posterior de la corbata.

Després d'això, vaig enganxar la làmina de goma a la corbata. Tenia por d’utilitzar massa cola que saturés la tela i fos visible des de la part frontal, així que vaig intentar uniformitzar-la i no fer-ne servir massa. En general, es veu bé, però en alguns llocs vaig notar massa o massa pega, perquè entrava a través de la tela o no enganxava la tela molt bé. Afortunadament, això només és visible a poca distància amb llum intensa.

El quadre i l’empat ja estan acabats. És hora d’enganxar la fibra òptica!

Pas 5: enganxar el Fiberoptics

Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica
Enganxar la fibra òptica

La joguina tenia un gran paquet de cables de fibra òptica que es trencaven fàcilment. Vaig intentar enganxar-los un a un al principi, però aviat em vaig adonar que seria millor fer feixos petits i enganxar-los al LED alhora. Això farà que sigui més fàcil mantenir-lo constant fins que la cola estigui seca. Va desordenar el primer LED descobrint això.

Assegureu-vos d’utilitzar una cola transparent. El que vaig utilitzar es va assecar molt lentament i la cola d’assecat ràpid que vaig provar el primer LED es va tornar blanca, fent que algunes fibres del primer LED fossin menys brillants.

Vaig enganxar petites làmines de cautxú negre per evitar fuites de llum a la part superior i per separar els LED.

Una de les fulles va evitar que el cas es tanqués, de manera que vaig afegir una goma per mantenir la tapa tancada.

Pas 6: posar fibra òptica a través de la corbata

Posar la fibra òptica a través de la corbata
Posar la fibra òptica a través de la corbata
Posar la fibra òptica a través de la corbata
Posar la fibra òptica a través de la corbata
Posar la fibra òptica a través de la corbata
Posar la fibra òptica a través de la corbata

Començant per la part inferior, vaig pessigar forats amb una agulla i vaig posar les fibres una a una. Les fibres de cada LED s’estenen aleatòriament per la corbata.

Vaig enganxar una tira negra a la part posterior que se suposava que anava fins a la part més petita de la corbata per mantenir el pes de la caixa, però després de passar tots els cables i sentir la tensió dels cables, vaig decidir enganxar tot a la corbata va ser una millor idea i va tallar la tira.

Com que els cables de fibra òptica de la joguina eren tan curts, era difícil encaixar-los a tota la corbata. Em limitava a col·locar la caixa i em costava fer-ho tot tan pla com volia.

Pas 7: Enganxar fibra òptica a la corbata

Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata
Enganxar fibra òptica a la corbata

Vaig enganxar tots els cables de fibra òptica a la làmina de goma per evitar que els cables s’extirpessin de la làmina de goma i per fer que la corbata fos plana.

Per assegurar-me que no vaig enganxar la pinça a la corbata en pressionar-la, vaig posar una mica de paper pel mig. No es veu tan bé, però funciona bé. I no ho veieu quan està tancat.

Després d'assecar-se la cola, vaig tallar els cables de la part frontal i vaig tallar una mica la làmina de goma just per sobre del fil més alt, perquè la corbata era una mica massa llarga.

Les fotos amb la camisa blanca es fan abans de tallar aquest darrer tros de goma.

Pas 8: el codi

A sota del codi que vaig escriure per a l’empat.

Tots els LED tenen una "mitjana" establerta (en realitat no una mitjana, sinó una brillantor mitjana).

Tan bon punt assoleixi aquesta mitjana, decidirà amb una possibilitat de 3/4 d'anar a una brillantor inferior. També estableix a l’atzar una nova brillantor mínima, màxima brillantor, temps d’espera per obtenir una brillantor mínima i màxima i la velocitat que augmenta o disminueix cada ronda (1-255) a partir de 5 valors predeterminats. Després farà un cicle fins que torni a assolir la mitjana. Només 2 LED poden estar en un cicle alt al mateix temps.

Tots els estats es representen mitjançant un valor enter (1-7) que determina si va a fer una mitjana-baixa, baixa-mitjana, espera baixa, actualització, etc.

Per obtenir informació sobre com penjar codi a l’arduino, consulteu www.arduino.cc

/ * Corbata de cel estrellat * * Aquest és un guió per esvair de manera aleatòria 5 LEDs de brillantor mitjana a menor * o superior amb configuracions aleatòries més baixes, més altes i de temps * per semblar un cel estrellat quan s’utilitza amb fibra òptica. * En aquest cas, s’implementaran en empat. * * Possibilitat de pujar / baixar = 1/4 amunt, 3/4 avall, amb un màxim de 2 * pujant al màxim al mateix temps. * * La mitjana es manté igual. * Les opcions mínimes, màximes i de temps canvien aleatòriament * a partir de 5 opcions cada vegada que un LED torna a assolir la mitjana. * * Creat per Billy Jaspers, maig de 2019. *

/ Declareu els pins

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

// Variables de temps

llarga hora sense signar; Temps d’espera llarg sense signar [5]; unsigned long lastRound;

// Variables LED

int brightMin [5] = {10, 10, 10, 10, 10}; // Brillantor mínima int brightAvg [5] = {200, 200, 200, 200, 200}; // Brillantor mitjana int brightMax [5] = {240, 240, 240, 240, 240}; // Llum màxima int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Temps d’espera int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Temps d’espera int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Increment del temps d'espera [5] = {2, 5, 4, 5, 2}; // Increment de la brillantor int currentBright [5] = {200, 230, 210, 210, 235}; // Brillantor actual

// Possibilitats de variables LED

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Possibilitats de brillantor mínimes int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Possibilitats de brillantor màximes int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Temps d’espera amb possibilitats de poca brillantor int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Temps d’espera amb possibilitats d’alta brillantor int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Temps d’espera amb possibilitats mitjanes de brillantor int incrementPos [5] = {2, 4, 5, 3, 1}; // augment de les possibilitats de brillantor

// Les variables

bool startup = cert; // Cal iniciar la configuració d'inici?

// Variables direccionals

/ * 0 = Esperar a la mitjana 1 = passar a la mitjana 2 = esperar a la baixa 3 = anar a la mitjana de 4 = anar a la mitjana de 5 = esperar a la màxima 6 = anar a la mitjana de 7 = Actualitzar les variables * / int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {fals, fals, fals, fals, fals}; // El Led està esperant?

// Variables aleatòries

nombre aleatori llarg; // Llarg per emmagatzemar nombre aleatori llarg randomNumberTwo; // Llarg per emmagatzemar el segon número aleatori

// comptadors

int i = 0; // Comptador per a bucle principal

configuració nul·la () {

Serial.begin (115200); // Iniciar serial randomSeed (analogRead (A0)); // Defineix randomseed

// Declarar les sortides

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

// Escriviu dades als LED

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

// Bucle principal

void loop () {if (startup) {// Configuració d'inici lastRound = millis (); // Estableix lastRound per a l'arrencada writeToLED (); // Escriviu dades d’inici a l’inici del LED = false; // Desactiva l’inici} currentTime = millis (); // Estableix l’hora actual

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Actualització del Led randomNumber = random (5); brightMin = BrightMinPos [randomNumber]; // Estableix el valor aleatori per a una brillantor mínima randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Estableix el valor aleatori per a una brillantor màxima randomNumber = random (5); timeWaitLow = timeLowPos [Número aleatori]; // Estableix el valor aleatori per a un temps d’espera baix Nombre aleatori = aleatori (5); timeWaitMax = timeHighPos [Número aleatori]; // Estableix el valor aleatori per a un temps d'espera elevat randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Estableix el valor aleatori per al temps d’espera mitjà randomNumber = random (5); increment = incrementPos [Número aleatori]; // Estableix el valor aleatori per al valor d’increment randomNumber = random (2); // Estableix un valor aleatori per a la direcció randomNumberTwo = random (2); // Estableix el valor aleatori per a la direcció si (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Si es troba al punt més baix: aneu a Avg esperant} else {currentBright = currentBright + increment ; // Una altra cosa: major brillantor}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// If not waiting: waitingTime = millis (); // Estableix l'estat del temps d'espera Esperant = cert; // Comenceu a esperar} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Si heu esperat AND timeWaitAvg: statusWaiting = false; // Stop status statusLED = 3; // Estableix statusLed a esperant l’actualització}} else if (statusLED == 1) {// -1- Avg a Low if (currentBright <= brightMin ) {statusLED = 2; // Si es troba al punt més baix: aneu a Waiting Low} else {currentBright = currentBright -increment ; // Una altra cosa: menor brillantor}} else if (statusLED == 6) {// -6- Passant a la mitjana màx si (currentBright = timeWaitMax ) {// Si heu esperat AND timeWaitAvg: statusWaiting = false; // Stop status statusLED = 6; // Estableix statusLed a Esperant actualització}} else if (statusLED == 4) {// -4- Avging Max a Max if (currentBright > = brightMax ) {statusLED = 5; // Si es troba al punt més baix: aneu a Waiting High} else {currentBright = currentBright + increment ; // Una altra cosa: major brillantor}} else if (statusLED == 0) {// -0- Waiting at Average if (! StatusWaiting ) {// If not waiting: waitingTime = millis (); // Estableix l'estat del temps d'espera Esperant = cert; // Comença a esperar} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Si espera AND timeWaitAvg ha passat: statusWaiting = false; // Stop status statusLED = 7; // Estableix l'estatLed a esperant l'actualització}}} i = 0; lastRound = millis (); // Estableix quan s’acaba l’última ronda. writeToLED (); // Escriviu totes les dades als LED}}

Pas 9: producte final

Image
Image
Producte final
Producte final
Producte final
Producte final

Crec que va funcionar bé. La corbata no és massa gruixuda, rígida, llarga ni pesada i l’efecte estrella sembla increïble.

Recomanat: