Taula de continguts:
- Pas 1: controlador
- Pas 2: embolicar l'arbre
- Pas 3: no oblideu l'estrella a la part superior
- Pas 4: provar-ho
Vídeo: Arbre espiral LED: 4 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
M'encanten tot tipus de tires LED. Vaig fer una bona llum arc de Sant Martí amb ells. Fins i tot els no adreçables són útils. He creat una llum exterior de paraigües de mercat lligant-les a les costelles del parabrisa, de manera que quan va esclatar el meu arbre en espiral vaig decidir embolicar-hi una tira de led.
Pas 1: controlador
Vaig decidir utilitzar leds RGB no adreçables. Això significa que puc tenir un efecte programat, però tots els leds canvien de color simultàniament. Això també significa que es necessitarà un controlador. Podria haver utilitzat un arduino uno i fer-ho per fer les proves inicials amb un escut RGB, però vaig acabar fent servir una sola placa personalitzada amb un xip Atmega328 nu. Només calia canviar de programador de destinació i programar el xip directament.
Em quedaven moltes d'aquestes taules d'altres projectes de làmpades. Si us plau, no dubteu a utilitzar un controlador preprogramat en línia, com el que he fet al paraigua.
Vaig acabar fent servir una demostració de crossfade lent com a base de l'arbre.
/ ** Codi per a la creuada de 3 LEDs, vermell, verd i blau (RGB) * Per crear fades, heu de fer dues coses: * 1. Descriviu els colors que voleu que es mostrin * 2. Enumereu l'ordre que desitgeu per descolorir * * DESCRIPCIÓ DEL COLOR: * Un color és només una matriu de tres percentatges, 0-100, * controlant els LED vermells, verds i blaus * * El vermell és el LED vermell complet, blau i verd apagat * int vermell = {100, 0, 0} * El blanc atenuat són els tres LED al 30% * int dimWhite = {30, 30, 30} * etc. * * A continuació, es proporcionen alguns colors habituals o feu el vostre propi * * LLISTAT DE COMANDA: * A la part principal del programa, heu d’enumerar l’ordre * en què voleu que apareguin els colors, per exemple * crossFade (vermell); * crossFade (verd); * crossFade (blau); * * Aquests colors apareixeran en aquest ordre, desapareixent d'un * color i passant al següent * * A més, hi ha 5 opcions opcionals que podeu ajustar: * 1. El color inicial es defineix en negre (de manera que el primer color s'esvaeix) a), però * podeu establir que el color inicial sigui qualsevol altre color * 2. El bucle intern funciona per 1020 interaccions; la variable "espera" * estableix la durada aproximada d'un únic esvaïment creuat. En teoria, * una "espera" de 10 ms hauria de fer un crossFade de ~ 10 segons. A la * pràctica, les altres funcions que realitza el codi fan que aquest * baixi fins a ~ 11 segons al meu tauler. YMMV. * 3. Si "Repeteix" s'estableix a 0, el programa farà un bucle indefinidament. * si s'estableix en un número, repetirà el nombre de vegades, * i s'aturarà en l'últim color de la seqüència. (Establiu "retorna" a 1, * i feu l'últim color negre si voleu que s'esvaeixi al final.) * 4. Hi ha una variable "retenir" opcional, que enganxa el programa * per "retenir" mil·lisegons quan un color està complet, * però abans que comenci el color següent. * 5. Establiu el senyal DEBUG a 1 si voleu que s'enviï la sortida de depuració al monitor sèrie. * * Les funcions internes del programa no són complicades, però * són una mica exigents: el funcionament intern s’explica * a sota del bucle principal. * * Abril de 2007, Clay Shirky *
/ Sortida
int grnPin = 9; // LED verd, connectat al pin digital 10 int redPin = 10; // LED vermell, connectat al pin digital 9 int bluPin = 11; // LED blau, connectat al pin digital 11
// Matrius de colors
int negre [3] = {0, 0, 0}; int blanc [3] = {100, 100, 100}; int red [3] = {100, 0, 0}; int green [3] = {0, 100, 0}; blau int [3] = {0, 0, 100}; int groc [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // etc.
// Estableix el color inicial
int redVal = negre [0]; int grnVal = negre [1]; int bluVal = negre [2];
int espera = 3; // 10 ms de retard creuament intern; augmenta per esvaits més lents
int hold = 0; // Mantenir opcional quan es completa un color, abans del següent crossFade int DEBUG = 0; // comptador DEBUG; si s'estableix a 1, tornarà a escriure els valors mitjançant la sèrie int loopCount = 60; // Amb quina freqüència s’ha d’informar DEBUG? int repeteix = 0; // Quantes vegades hauríem de fer un bucle abans d’aturar-nos? (0 per a cap parada) int j = 0; // Comptador de bucles per repetir
// Inicialitzar variables de color
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// Configureu les sortides LED
void setup () {pinMode (redPin, OUTPUT); // estableix els pins com a sortida pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);
if (DEBUG) {// Si volem veure valors per a la depuració …
Serial.begin (9600); // … configureu la sortida de sèrie}}
// Programa principal: llista de l'ordre dels esvaits creuats
bucle buit () {crossFade (vermell); crossFade (verd); crossFade (blau); crossFade (groc);
if (repetir) {// Fem un bucle un nombre finit de vegades?
j + = 1; if (j> = repetir) {// Ja hi som? sortida (j); // Si és així, atureu-vos. }}}
/ * A CONTINUACIÓ AQUESTA LÍNIA ÉS LA MATÈNIA: NO HI HAURIA DE CANVIAR-HO PER ELS BÀSICS
* * El programa funciona així: * Imagineu un atenuament creuat que mou el LED vermell de 0-10, * el verd de 0-5 i el blau de 10 a 7, en * deu passos. * Voldríem comptar els 10 passos i augmentar o * disminuir els valors de color en increments de gradualitat. * Imagineu que un + indica augmentar un valor en 1, i un - * equival a baixar-lo. El nostre fade de 10 passos seria el següent: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + * G + + + + + + * B - - - * * El vermell surt de De 0 a 10 en deu passos, el verd de * 0-5 en 5 passos i el blau cau de 10 a 7 en tres passos. * * Al programa real, els percentatges de color es converteixen en valors * 0-255 i hi ha 1020 passos (255 * 4). * * Per esbrinar el grau de pas que hi hauria d’haver entre una marca amunt o avall d’un dels valors del LED, anomenem calculateStep (), * que calcula l’espai absolut entre els valors inicial i final, * i després divideix aquest buit per 1020 per determinar la mida del pas * entre els ajustos del valor. * /
int calculateStep (intValor previ, intValor final) {
int step = EndValue - PreValor; // Quina és la bretxa general? if (pas) {// Si no és nul, pas = 1020 / pas; // divideix per 1020} pas de retorn; }
/ * La següent funció és calculateVal. Quan el valor del bucle, i, * arriba a la mida de pas adequada per a un dels * colors, augmenta o disminueix el valor d’aquest color en 1. * (R, G i B es calculen cadascun per separat.) * /
int calculateVal (int step, int val, int i) {
if ((pas) && i% step == 0) {// Si el pas és diferent de zero i és hora de canviar un valor, if (pas> 0) {// incrementar el valor si el pas és positiu … val + = 1; } else if (pas 255) {val = 255; } else if (val <0) {val = 0; } retorn val; }
/ * crossFade () converteix el percentatge de colors a
* Interval de 0-255, després fa 1020 vegades, comprova si * cal actualitzar el valor cada vegada i escrivint * els valors de color als pins correctes. * /
void crossFade (color int [3]) {
// Converteix a 0-255 int R = (color [0] * 255) / 100; int G = (color [1] * 255) / 100; int B = (color [2] * 255) / 100;
int stepR = calculateStep (prevR, R);
int stepG = calculateStep (prevG, G); int pas B = calculateStep (prevB, B);
for (int i = 0; i <= 1020; i ++) {redVal = calculateVal (stepR, redVal, i); grnVal = calculateVal (stepG, grnVal, i); bluVal = calculateVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Escriviu els valors actuals als pins LED
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
retard (esperar); // Pausa durant "milersegons" d'espera abans de reprendre el bucle
if (DEBUG) {// Si volem una sortida en sèrie, imprimiu-la al fitxer
if (i == 0 o i% loopCount == 0) {// inici, i cada loopCount vegades Serial.print ("bucle / RGB: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print ("/"); Serial.print (grnVal); Serial.print ("/"); Serial.println (bluVal); } DEBUG + = 1; }} // Actualitza els valors actuals del següent bucle prevR = redVal; prevG = grnVal; prevB = bluVal; retard (retenció); // Posa en pausa els mil·lisegons "espera" opcionals abans de reprendre el bucle}
Pas 2: embolicar l'arbre
He utilitzat tires impermeables, ja que seran a l’aire lliure. Es van quedar sols, però vaig seguir ràpidament amb llaços per assegurar-me que es quedessin. Hack fàcil i senzill. La capacitat d’alimentació de la tira va facilitar l’alimentació de la font d’energia cap a la part inferior i la sortida d’energia cap a l’estrella.
Pas 3: no oblideu l'estrella a la part superior
Per a l'estrella he utilitzat un parell de xips de 10W per cridar l'atenció. Els vaig soldar a una làmina de coure com a dissipador de calor. Podria haver utilitzat més tires ja que en sobrava una mica.
Pas 4: provar-ho
El primer intent va ser massa ràpid …
Un cop el vaig calmar va quedar força bé.
Recomanat:
Espiral del caos (espiral d’hipnosi): 5 passos (amb imatges)
Espiral del caos (espiral d’hipnosi): també podeu imprimir aquest objecte en 3D, però assegureu-vos de no imprimir imants i coixinets :) necessitareu l’original imprès en 3D no funcionarà. ? Aquí teniu les coses que heu de recollir abans de començar
Arbre de Nadal imprès en 3D amb LED: 10 passos (amb imatges)
Arbre de Nadal imprès en 3D amb LED incrustat: es tracta d’un arbre de Nadal imprès en 3D amb LED adreçables incorporats al seu interior. Per tant, és possible programar els LEDs per obtenir efectes de llum agradables i utilitzar l’estructura impresa en 3D com a difusor. L'arbre està separat en 4 etapes i un element base (l'arbre
El llum espiral (també conegut com el llum d’escriptori Loxodrome): 12 passos (amb imatges)
The Spiral Lamp (també conegut com el llum d’escriptori Loxodrome): The Spiral Lamp (també conegut com el llum d’escriptori Loxodrome) és un projecte que vaig començar el 2015. Es va inspirar en l’aplicació Loxodrome de Paul Nylander. La meva idea original era una làmpada d’escriptori motoritzada que projectés remolins de llum que fluïssin a la paret. Vaig dissenyar i
Arbre de Nadal amb espiral: 4 passos (amb imatges)
Arbre de Nadal amb espiral: Hola amics En aquest inescrutable farem un arbre de Nadal amb espiral
Arbre de Nadal LED amb projector de vídeo (Rasp Pi): 7 passos (amb imatges)
Arbre de Nadal LED amb projector de vídeo (Rasp Pi): mirant el que algunes persones munten per a “ per sobre ” per a espectacles LED de Nadal a l’aire lliure, volia veure què era possible reunir el mateix nivell de sistema per a un arbre de Nadal dins de la casa. En instruccions anteriors I & r