Introduction: MoodLamp
La mood lamp o lampara de sentimientos, como su nombre lo indica es una lampara la cual juega con las intensidades y los colores para cambiar el espacio en la que se encuentra.
En este caso los colores están basados en la temperatura y humedad de la habitación en la que se encuentra, por medio de un sensor de Temperatura y Humedad (DHT11) o con la ayuda de tres potenciómetros puedes elegir el color que más te guste. Esta lampara fue programada sobre la plataforma Arduino.
Supplies
- 1 Arduino uno
- 1 protoboard
- 1 LED RGB
- 3 potenciómetros 10k
- 1 botón
- 1 sensor de temperatura y humedad DHT11
- 1 switch on/off
- 1 resistencia 1k
- 20 jumpers
- 1 hoja papel mantequilla
- 1 caja mediana
- 1 transformador
Step 1: Codigo
//Declaro parametros para el sensor DHT11
//Importo libreria del sensor DHT-11
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
//Delaro valores del boton
const int buttonPin = 3;
int buttonState = 0;
int lastButtonState = 0;
int modo = 0;
//Declaro los pines reservados para las tres patas del diodo
int Rojo = 11;
int Verde = 10;
int Azul = 9;
//Declaro los pines de entrada analogica de los potenciometros
int pot1 = A0;
int pot2 = A1;
int pot3 = A2;
//Asigno valor 0 a los potenciometros
int valPot1 = 0;
int valPot2 = 0;
int valPot3 = 0;
//Declaro variables para el valor de cada color
float valRojo;
float valVerde;
float valAzul;
//Inicializo funciones
void setup() {
pinMode(Rojo,OUTPUT);
pinMode(Verde,OUTPUT);
pinMode(Azul,OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
dht.begin(); }
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(modo);
if (buttonState == HIGH && lastButtonState == LOW){
if (modo == 0){
modoManual();
modo = 1;
} else {
modoAutomatico();
modo = 0;
}
}
lastButtonState = buttonState;
if (modo == 0){
modoManual();
}
else{ modoAutomatico();
}
}
void modoManual(){
float Constante = (float) 255 / 1023;
valPot1 = analogRead(pot1);
valPot2 = analogRead(pot2);
valPot3 = analogRead(pot3);
valRojo = Constante * valPot1;
valVerde = Constante * valPot2;
valAzul = Constante * valPot3;
colorM(valRojo,valVerde,valAzul);
}
void modoAutomatico(){
delay(2000);
int h = dht.readHumidity();
int t = dht.readTemperature();
if (isnan(h) || isnan(t)){
Serial.println(F("Error en la lectura!"));
return;
}
int Trojo,Tverde,Tazul;
if (h = 70 && h <= 80){
Trojo = 150;
}else if (t <= 10){
Tverde = 200; T
azul = 250;
}else if (t > 10 && t <= 20){
Tverde = 200;
Tazul = 200;
}else if (t = 20 && t <= 30){
Tverde = 200;
Tazul = 150;
}else if (t > 30){
Tverde = 150;
Tazul = 100;
}
if (h = 80 && h == 100){
Trojo = 250;
}else if (t <= 10){
Tverde = 200;
Tazul = 200;
}else if (t > 10 && t <= 20){
Tverde = 200;
Tazul = 150;
}else if (t > 10 && t <= 20){
Tverde = 150;
Tazul = 100;
}else if (t = 20 && t <= 30){
Tverde = 100;
Tazul = 50;
}else if ( t > 30){
Tverde = 50;
Tazul = 0;
}
colorA(Trojo,Tverde,Tazul); }
void colorM(int rojo, int verde, int azul){
analogWrite(Rojo, 255-rojo);
analogWrite(Verde, 255-verde);
analogWrite(Azul, 255-azul);
}
void colorA(int rojo, int verde, int azul){
analogWrite(Rojo, rojo);
analogWrite(Verde, verde);
analogWrite(Azul, azul);
}
Step 2: Diagrama De Flujo
Con este diagrama puedes tener una mejor idea de como funciona el programa
Step 3: Conexiones Y Esquemático
Con estos dos tipos de conexiones puedes tomar ideas de como conectar los diferentes elementos de tu lampara.
Con ayuda del programa Fritzing.
Step 4: Crea Tu Lampara
Con la caja que tiene, busca la manera de colocar todos los elementos que conforman tu lampara.
Ahora que ya sabes donde irá cada uno de los elementos puedes iniciar a cortar o a modificar tu caja, en mi caso abrí tres agujeros del mismo diámetro para los potenciómetros, uno un poco mas grande para switch y para la entrada del transformador, uno grande para el LED y 9 pequeños para el sensor.
Con la madera que me sobro del agujero grande forme una tapadera para ocultar un poco mas el botón.
Para finalizar si deseas puedes pintar la caja de tu color favorito.
TIP:
Si deseas puedes pegar los elementos con ayuda de silicón caliente, o en mi caso asegurarlos con piezas de madera para evitar que se desconecten.