Saltar la navegación

Mesa de Luces a partir de una caja de plástico

Vamos a realizar una caja de luces (tipo mesa de luces de las aulas multisensoriales)
con la ayuda de una caja de plástico rígida, una tira de leds, un Arduino Nano, 4 potenciómetros
y una pantalla LCD.
La idea es tener la opción de conseguir todos los colores y brillos posibles, y de bajo coste.

f1
f2

Esquema

lcd tira pot

Materiales y proceso
Vamos a necesitar una caja de plástico rígida. 
En función de su uso deberá de ser más o menos rígida.
t1
A esta caja le vamos a poner un acrilico translucido como pantalla.
Lo más aconsejable sería tener una pieza que encajará por encima de la tapa, que vamos
a recortar, para garantizar mayor seguridad. En este ejemplo, dado que la pieza translucida
era pequeña, la hemospuesto por debajo.
Otra alternativa es la de conseguir una caja translucida y, con pintura, cubrirla toda menos 
la parte del rectangulo superior.
t2

Recortamos con una forma rectangular el acrilico.
a1
a2

Hay que disponer de algunas herramientas para garantizar un mejor resultado.
Dado que esta caja se va a llevar a un centro escolar será necesario extremar los 
detalles de seguridad.

t3
t4
t5

t8

A esta caja le vamos a poner una tira de leds, en función de las medidas de la caja tal vez 
necesites más de un metro/30 leds. Mejor hacer pruebas antes de enganchar las tiras. 
Vamos a poner las tiras en los laterales y en la base.

t11
t10
t9

Ahora vamos a hacer unos orificios en los que pondremos los potenciometros.
Pondremos 4: uno por color RGB (Red, Green and Blue) y un cuarto para el brillo.
Este último lo separaremos un poco para no confundirnos.
p4
No engancharemos nada hasta que estemos seguros que funciona. Podemos utilizar cinta 
de pintor para encajar las piezas. En nuestro caso para evitar más soldaduras hemos utilizado una base en la que poner nuestro Arduino Nano.
p5bis

Por la cara exterior de la caja pondremos los reguladores de los potanciometros siguiendo el orden 
de los colores escogidos.
p6
Y justo un poco más debajo crearemos el espacio necesario para poder poner una pantalla LCD.
Hay de diferntes tipos de pantallas. Aqui hemos utilizado una de dos lineas dado que solo queremos 
saber la combinación de valores de colores y brillo
p7

Código

//Para conectar con el modulo con el Arduino solo utilizamos los pines I2C del Arduino (SDA y SCL)
//y alimentación (GND y 5V),
//los pines I2C varían de acuerdo al modelo de Arduino con el que trabajemos,
//en este caso Arduino UNO GND a GND, VCC a 5V, SDA a A4 y SCL a A5.
//Estos pines son también válidos para Arduino Nano y Arduino Mini
#include <Adafruit_NeoPixel.h>
 
#define PIN 6 //Pin entrada Neopixel a Pin 6 arduino
#define NUMPIXELS      150 // Número de píxels de la tira
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
 #include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
//Crear el objeto lcd  dirección  0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27,16,2);  //
int delayval = 1000; // delay entre píxels
const int analogPinRed = A0;
const int analogPinGreen = A1;
const int analogPinBlue = A2;
const int analogbrightness = A3;
 
int brightness = 80;
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
 
void setup() {
  // Inicializa la libreria NeoPixel.
  pixels.begin();
    // Inicializar el LCD
  lcd.init();
    //Encender la luz de fondo.
  lcd.backlight();
  lcd.clear(); // Borra contenido pantalla
  lcd.setCursor(1,0); // Inicio del cursor
  lcd.print("Color y brillo");
  lcd.setCursor(1,1); // Inicio del cursor
  lcd.print("potenciometros");
}
 
void loop() {
  setColor();//ejecuta la función fijar color
  pixels.setBrightness(brightness);
  lcd.clear(); // esborra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("R");
  lcd.setCursor(1,0); // Inici del cursor
  lcd.print(redColor);//escribe componente rojo del color
  lcd.setCursor(6,0); // Inici del cursor
  lcd.print("G");
  lcd.setCursor(7,0); // Inici del cursor
  lcd.print(greenColor);//escribe componente verde del color
  lcd.setCursor(12,0); // Inici del cursor
  lcd.print("B");
  lcd.setCursor(13,0); // Inici del cursor
  lcd.print(blueColor);//escribe componente azul del color
  lcd.setCursor(0,1); // Inici del cursor
  lcd.print("Brightness=");//escribe componente azul del color
  lcd.setCursor(12,1); // Inici del cursor
  lcd.print(brightness);//escribe componente azul del color
  for (int i=0; i < NUMPIXELS; i++) {
    //cada píxel asume el color
    pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
 
    // manda el color a la tira.
    pixels.show();
 
    // Delay entre píxels (in milliseconds).
  }
      delay(delayval);
 
}
 
// setColor()
//fija el color en función de las posiciones de los potenciómetros
void setColor(){
  redColor = analogRead(analogPinRed) / 4;
  greenColor = analogRead(analogPinGreen) / 4;
  blueColor = analogRead(analogPinBlue) / 4;
  brightness= analogRead(analogbrightness) / 4;
}