Tabla de contenido:
- Suministros
- Paso 1: ¡Hagámoslo
- Paso 2: preparación del material
- Paso 3: corte de acrílico
- Paso 4: Cree caras con impresoras 3D
- Paso 5: filmación
- Paso 6: Conecte la tira de LED + tira de LED de soldadura (NeoPixel) con cables
- Paso 7: Interruptor de tacto de soldadura con cables
- Paso 8: Ensamblaje - Inserte el perno en el costado = ①
- Paso 9: Adjunte Ⓛⓣ al Ⓒ = ②
- Paso 10: Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
- Paso 11: Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
- Paso 12: Adjunte Ⓢ a Ⓓ = ⑤
- Paso 13: Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
- Paso 14: Montaje completo de la pieza
- Paso 15: La apariencia funcional de un proyecto
- Paso 16: NeoPixel, cableado del conector
- Paso 17: Cableado de NeoPixel y Arduino
- Paso 18: programa el Arduino
- Paso 19:
- Paso 20: Patrones
Video: ¡Iluminame !: 20 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
miembros del equipo del proyecto
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
¿Y si pudieras tocar y diseñar la luz? ¿Cómo se sentiría si tuvieras un hermoso patrón de luz que diseñaste tú mismo con una animación interesante? ¡Light me up será un interesante cuaderno de bocetos que toca y diseña la luz en sí y crea patrones interesantes! Este proyecto tiene varios triángulos que forman un forma hexagonal. ¡Para que pueda crear patrones estereoscópicos de acuerdo con cómo diseñe la luz! Simplemente presione cada pieza y se graduarán varios colores, y cuando salga el color que desea, simplemente presione la mano que presionó y ¡seguirá brillando maravillosamente con el color que deseaba! El proyecto usó alrededor de 312 triángulos, pero podría crear una bonita luz que funciona bien con 6 triángulos. Ahora déjame mostrarte cómo hacerlo con seis triángulos. ¡Sigue los pasos y tendrás tu propio trabajo maravilloso!
Suministros
Hardware: Arduino (usé arduino mega 2560), acrílico (transparente, blanco), tira de LED (NeoPixel), película difusora, botón, conector de 4 pines, cable, placa de circuito, fuente de alimentación
Herramientas: Máquina de corte guiada por láser, Impresora 3D
Paso 1: ¡Hagámoslo
¡Hagamos esta linda pieza hexagonal conmigo!
Light Me Up está hecho con 312 triángulos, pero incluso 6 triángulos pueden diseñar una luz maravillosa. Si desea hacerlo a mayor escala, puede hacerlo consultando el archivo adjunto a continuación.
Paso 2: preparación del material
Paso 3: corte de acrílico
Utilice un cortador láser para cortar la parte delantera y trasera de cada parte. El color del acrílico en la parte posterior puede ser el que desee, pero asegúrese de usar acrílico transparente porque el frente debe atenuarse. Si usa un acrílico de color que no sea transparente, no verá bien la luz.
Paso 4: Cree caras con impresoras 3D
Ahora es el momento de hacer los lados de cada pieza. ¡Vamos a hacerlo! Los archivos de modelado 3D en el lateral se adjuntan a continuación. Usamos el PLA para hacer los lados. El PLA es más fuerte y tiene menos contracciones que el ABS, por lo que se recomiendan los filamentos para usar el PLA.
Paso 5: filmación
Ahora pongamos una película de difusión de luz sobre el acrílico del frente. Si le pones una película, se extiende y brilla mucho más bonito. Primero, corte la película en forma de triángulo (será mejor que corte la película más grande que el acrílico cortado) Es simple colocar una película, como una película protectora en su teléfono. Si quieres dar propina aquí, puedes usar una tarjeta para empujarla para que se pueda pegar perfectamente.
Paso 6: Conecte la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Si ha sido tan bueno soldando la tira de LED, es hora de poner la tira de LED en la parte posterior. Primero, coloque una pistola de pegamento o cinta adhesiva de dos caras en la parte posterior de la tira de LED. Y primero retire los cables de ambos lados del cable de soldadura a través de los orificios en ambos lados. Finalmente, coloque la tira de LED en el acrílico posterior y ¡se acabó!
¡Es hora de soldar! Prepare tiras de LED, conectores de 4 pines (conector o cables) y lo que necesita para soldar. Usé LED en tres unidades. Puede usar uno o dos LED si lo desea, pero le recomiendo usar tres. Cuando todos los materiales estén listos, suelde los cables en ambas líneas de datos, líneas de 5v y líneas de tierra de la tira de LED.
Paso 7: Interruptor de tacto de soldadura con cables
Paso 8: Ensamblaje - Inserte el perno en el costado = ①
¡Ahora es una parte realmente fácil! Coloque un perno en cada uno de los tres lados impresos en 3D. La razón por la cual el uso del botón de perno como el uso de pernos y tuercas estructurales podrá hacer. Cuando la pieza esté terminada, la pondré en el estuche y la terminaré con una tuerca.
Paso 9: Adjunte Ⓛⓣ al Ⓒ = ②
Paso 10: Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Paso 11: Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Si coloca un perno en el costado, nosotros lo colocamos en el costado y en el frente. El frente es acrílico, por lo que debe colocarlo con un enlace acrílico específico. Si unes acrílico a una unión regular, dejará una marca.
Paso 12: Adjunte Ⓢ a Ⓓ = ⑤
Paso 13: Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Paso 14: Montaje completo de la pieza
Paso 15: La apariencia funcional de un proyecto
Paso 16: NeoPixel, cableado del conector
Paso 17: Cableado de NeoPixel y Arduino
Paso 18: programa el Arduino
extern volatile unsigned long timer0_millis;
#incluir
#define MODEBTNNUM 3 int ani_mode = 0; preM1 largo sin firmar, preM2, preM3;
configuración vacía () {
Wire.begin (); para (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i + 2, INPUT_PULLUP); } //Serial.begin(9600); }
bucle vacío () {
para (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } for (int i = 0; i <6; i ++) {Wire.requestFrom (i + 1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); si (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} ///////////////////////////////////////////////// /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; para (int i = 1; i 5000) {preM2 = current2; para (int i = 1; i 3000) {preM3 = current3; // timer0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("reinicio del temporizador"); for (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}
Paso 19:
extern volatile unsigned long timer0_millis;
#incluir
#incluir #definir PIN 12 #definir NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int num = NUMPIXELS / 3; const int esclavoNum = 1; int colores [num] [3]; int matiz [num]; int sat [num]; int brillante [num]; int pNumber = 0; int gValue [num] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; const int btnPin [num] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59}; int btnState [num]; boolean btnMode; int hueV [num] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; #incluya #define BTNNUM 1 int f_v = 1; unsigned long preMillis1; preM largo sin firmar; int ani_mode = 0; int ani2_Counter = 0; int contador = 0; /////////////////////////////////////////// configuración vacía () {Wire. comenzar (esclavoNum); Wire.onRequest (requestEvent); Wire.onReceive (ReceiveEvent); para (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } /////////////////////////////////////////////
bucle vacío () {
if (f_v == 1) {for (int i = 0; i <num; i ++) {tono = 50; sat = 95; brillante = 100; } f_v = 0; } ////////////////////////////////////// // 버튼 입력 체크: 멈춤 신호 보내기 btnMode = falso; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); ////////////////////////////////////// interruptor (ani_mode) {caso 0: ani0 (); rotura; caso 1: ani1 (); ani_mode = 0; ani2_Counter = 0; rotura; caso 2: ani2_Counter = 1; ani_mode = 0; rotura; caso 3: ani3 (); ani_mode = 0; ani2_Counter = 0; rotura; predeterminado: readyState (); rotura; } if (ani2_Counter == 1) {ani2 (); } setPixels (num); }
///////////////////////////////////////////
evento de recepción vacío (int cómoMuchos) {int x = Wire.read (); if (x == 5) {// Serial.println ("recibió 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////////////////// void requestEvent () {
if (btnMode == true) {
Wire.write (5); // Serial.println ("5 보냄"); } más {Wire.write (0); }
}
void ani0 () {
// Serial.println ("0"); }
void ani1 () {
// Serial.println ("1"); if (pNumber == 0) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; para (int a = 0; a <2; a ++) {tono [a1 [a] = 100; sat [a1 [a] = 95; brillante [a1 [a] = 100; } para (int b = 0; b <2; b ++) {tono [b1 = 200; sat [b1 = 95; brillante [b1 = 100; } para (int c = 0; c <2; c ++) {tono [c1 [c] = 300; sat [c1 [c] = 95; brillante [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; para (int a = 0; a <8; a ++) {tono [a2 [a] = 26; sat [a2 [a] = 95; brillante [a2 [a] = 100; } para (int d = 0; d <4; d ++) {tono [d2 [d] = 63; sat [d2 [d] = 95; brillante [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// patrón de cubo gigante para (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // amarillo 06 para (int a = 0; a <6; a ++) {tono [a14 [a] = 35; sat [a14 [a] = 95; brillante [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // amarillo para (int a = 0; a <6; a ++) {tono [a3 [a] = 53; sat [a3 [a] = 95; brillante [a3 [a] = 100; }} más si (pNumber == 4) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int a4 = {34, 35}; // amarillo int b4 = {47}; // azul int c4 = {48}; // violeta
para (int a = 0; a <2; a ++) {tono [a4 [a] = 53; sat [a4 [a] = 95; brillante [a4 [a] = 100; }
para (int b = 0; b <1; b ++) {hue [b4 = 210; sat [b4 = 95; brillante [b4 = 100; } para (int c = 0; c <1; c ++) {tono [c4 [c] = 307; sat [c4 [c] = 95; brillante [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};
para (int a = 0; a <6; a ++) {hue [a5 [a] = 100; sat [a5 [a] = 95; brillante [a5 [a] = 100; }} más si (pNumber == 6) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // amarillo para (int a = 0; a <6; a ++) {tono [a6 [a] = 53; sat [a6 [a] = 95; brillante [a6 [a] = 100; }} más si (pNumber == 7) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c7 [c] = 307; sat [c7 [c] = 95; brillante [c7 [c] = 100; }} más si (pNumber == 8) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c8 [c] = 307; sat [c8 [c] = 95; brillante [c8 [c] = 100; }} más si (pNumber == 9) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c9 [c] = 307; sat [c9 [c] = 95; brillante [c9 [c] = 100; }} más si (pNumber == 10) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c10 [c] = 307; sat [c10 [c] = 95; brillante [c10 [c] = 100; }} más si (pNumber == 11) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c11 [c] = 307; sat [c11 [c] = 95; brillante [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c12 [c] = 307; sat [c12 [c] = 95; brillante [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a13 = {34, 35}; // amarillo int b13 = {47}; // azul int c13 = {48}; // morado para (int a = 0; a <2; a ++) {tono [a13 [a] = 53; sat [a13 [a] = 95; brillante [a13 [a] = 100; } para (int b = 0; b <1; b ++) {tono [b13 = 210; sat [b13 = 95; brillante [b13 = 100; } para (int c = 0; c <1; c ++) {tono [c13 [c] = 307; sat [c13 [c] = 95; brillante [c13 [c] = 100; }} pNumber = pNumber + 1;
if (pNumber == 14) {
pNumber = 0; }}
void ani2 () {
// Serial.println ("2"); curM largo sin signo = milis ();
if (curM - preM> = 10) {
preM = curM; for (int i = 0; i <num; i ++) {if (tono = 360) {gValue = -1; } matiz = matiz + gValue ; } contador ++; if (contador == 360) {// Serial.print ("contador:"); // Serial.println (contador); // Serial.println (curM); contador = 0; ani2_Counter = 0; }}}
void ani3 () {
// Serial.println ("3"); } ///////////////////////////////////////////// void readyState () {/ / Serial.println ("listo"); } /////////////////////////////////////////// void btnEvent (int b_interval) {curMillis1 largo sin firmar = millis ();
for (int i = 0; i <num; i ++) {btnState = digitalRead (btnPin ); }
if (curMillis1 - preMillis1> b_interval) {
preMillis1 = curMillis1; para (int i = 0; i = 360) {hueV = -1; } más si (tono <= 0) {tonoV = 1; } tono = tono + tonoV ; brillante = 100; }}}} ///////////////////////////////////////////// void setPixels (int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (tono , sat , brillante , colores ); int num1 = i * 3; strip.setPixelColor (num1, colores [0], colores [1], colores [2]); strip.setPixelColor (num1 + 1, colores [0], colores [1], colores [2]); strip.setPixelColor (num1 + 2, colores [0], colores [1], colores [2]); } strip.show (); }
Paso 20: Patrones
Este proyecto tiene varios triángulos que forman una forma hexagonal. ¡Para que pueda crear patrones estereoscópicos de acuerdo con cómo diseñe la luz! Simplemente presione cada pieza y se graduarán varios colores, y cuando salga el color que desea, simplemente presione la mano que presionó y ¡seguirá brillando maravillosamente con el color que deseaba!
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Cómo: Instalación de Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: 7 pasos (con imágenes)
Cómo: Instalar Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: planeo usar este Rapsberry PI en un montón de proyectos divertidos en mi blog. No dudes en comprobarlo. Quería volver a usar mi Raspberry PI, pero no tenía un teclado ni un mouse en mi nueva ubicación. Ha pasado un tiempo desde que configuré una Raspberry
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: 6 pasos (con imágenes)
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: ¡Hola, chicos! Akarsh aquí de CETech. En este proyecto, vamos a echar un vistazo a HuskyLens de DFRobot. Es un módulo de cámara impulsado por inteligencia artificial que es capaz de realizar varias operaciones de inteligencia artificial como el reconocimiento facial
Reconocimiento de imágenes con placas K210 y Arduino IDE / Micropython: 6 pasos (con imágenes)
Reconocimiento de imágenes con placas K210 y Arduino IDE / Micropython: ya escribí un artículo sobre cómo ejecutar demostraciones de OpenMV en Sipeed Maix Bit y también hice un video de demostración de detección de objetos con esta placa. Una de las muchas preguntas que la gente ha hecho es: ¿cómo puedo reconocer un objeto que la red neuronal no está tr
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil