Saltar la navegación

Mural de luces de colores (bolas de ping-pong)


Mural de luces a partir de bolas de ping-pong.

Proceso.
Partiremos de un cartón pluma en el que mediremos la separación exacta para cada led, para cada bola:
Utilizaremos los leds con hilo que resultan más cómodos para este proceso.

leds
Medimos y perforamos la plancha de cartón pluma. Hay que contemplar la distancia entre bolas.
pas 1
Realizamos agujeros en el cartón. Una manera sencilla y bastante buena es usando el soldador:
Haya algun tipo de soldador que permite desmontar la punta, más delgada, para poder usar el tronco
central, más grueso y muy aproximado al diámetro del led.
pas_2

Ya podemos ir poniendo la tira de leds: Usando cola caliente podemos ir enganchando los leds.
Conveniente dar un poco de forma a los cables para que no nos den, después, más trabajo.
pas_3
Se recorta los leds que nos sobre y miramos que todo este bien enganchado. En nuestro caso hemos creado
una matrix de 8 x 6, 48 leds de una tira de 50 que es como suelen venderlas.
pas_4
Hay que mirar que aparezcan los cabezas de las bombillas por el otro lado:
pas_5
Y se van poniendo las bolas de ping-pong a base de quemar un poco un lado, perforándolas con el soldador.
Y utilizando cola caliente para engancharlas.
pas_6
Todas las bolas enganchadas.
pas_7
Un video muy corto donde se ve como ha quedado.

Utilizaremos un Arduino Nano. Nosotros preferimos que tenga esta estructura para garantizar que los cables
quedan bien sujetos.
pas_8
un ejemplo de luces en movimiento

Código

//divide la tira en 8 tramos (variable numtramos)
//asigna un color al azar (función set color)  a un led al azar (función np) en cada uno de los tramos
 
#include <Adafruit_NeoPixel.h>
 
#define PIN 5   // pin 5 de arduino a in tira
 
#define NUMPIXELS      48 // numero de pixels
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int brillo=5;//para fijar Brightness
int numtramos=12;
int delayval = 1000; // tiempo de regeneración de color
 
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
int np1=0;
int np2=0;
int np3=0;
int np4=0;
int np5=0;
int np6=0;
int np7=0;
int np8=0;
int np9=0;
int np10=0;
int np11=0;
int np12=0;
/*int np11=0;
int np12=0;
int np13=0;
int np14=0;
int np15=0;
*/
 
void setup() {
  // Initialize the NeoPixel library.
  pixels.begin();
  pixels.setBrightness(brillo);
 for (int i=0; i<NUMPIXELS;i++){
  pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
   setColor();
  
  
  }
  
}
 
void loop() {
   setColor();
  np();
 
  
  
  // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
  pixels.setPixelColor(np1, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np2, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np3, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np4, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np5, pixels.Color(redColor, greenColor, blueColor));
  setColor(); 
  pixels.setPixelColor(np6, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np7, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np8, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np9, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np10, pixels.Color(redColor, greenColor, blueColor));
  setColor(); 
 pixels.setPixelColor(np11, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np12, pixels.Color(redColor, greenColor, blueColor));
  setColor();
   /*pixels.setPixelColor(np13, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np14, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np15, pixels.Color(redColor, greenColor, blueColor));
  */ 
    pixels.show();
 
    setColor();
 
 delay(delayval);
  //pixels.setPixelColor(i, pixels.Color(0, 0, 0));
 
 
//}
 
 
}
void np(){
  np1 =random (0,NUMPIXELS/numtramos);
  np2 =random (NUMPIXELS/numtramos,2*NUMPIXELS/numtramos);
  np3 =random (2*NUMPIXELS/numtramos,3*NUMPIXELS/numtramos);
  np4 =random (3*NUMPIXELS/numtramos,4*NUMPIXELS/numtramos);
  np5 =random (4*NUMPIXELS/numtramos,5*NUMPIXELS/numtramos);
  np6 =random (5*NUMPIXELS/numtramos,6*NUMPIXELS/numtramos);
  np7 =random (6*NUMPIXELS/numtramos,7*NUMPIXELS/numtramos);
  np8 =random (7*NUMPIXELS/numtramos,8*NUMPIXELS/numtramos);
  np9 =random (8*NUMPIXELS/numtramos,9*NUMPIXELS/numtramos );
  np10 =random (9*NUMPIXELS/numtramos,10*NUMPIXELS/numtramos);
   np11 =random (10*NUMPIXELS/numtramos,11*NUMPIXELS/numtramos);
    np12 =random (11*NUMPIXELS/numtramos,12*NUMPIXELS/numtramos);
 /* np11 =random (10*NUMPIXELS/numtramos,11*NUMPIXELS/numtramos);
  np12=random (11*NUMPIXELS/numtramos,12*NUMPIXELS/numtramos);
  np13=random (12*NUMPIXELS/numtramos,13*NUMPIXELS/numtramos);
  np14=random (13*NUMPIXELS/numtramos,14*NUMPIXELS/numtramos );
  np15 =random (14*NUMPIXELS/numtramos,15*NUMPIXELS/numtramos);
 */   
}
// setColor()
// picks random values to set for RGB
void setColor(){
  redColor = random(0, 255);
  greenColor = random(0,255);
  blueColor = random(0, 255);
}