Mood Lamp Project 1

by mor21346 in Circuits > Arduino

110 Views, 2 Favorites, 0 Comments

Mood Lamp Project 1

WhatsApp Image 2021-09-24 at 4.08.00 PM.jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM.jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (1).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (2).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (3).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (4).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (5).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (6).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (7).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (8).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (9).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (10).jpeg
WhatsApp Image 2021-09-24 at 4.14.07 PM (11).jpeg
Moodlamp

Una lámpara de ambiente se utiliza para ayudar a crear un ambiente específico dentro de la habitación como medio para hacer el espacio más atractivo y acogedor de alguna manera.

Supplies

Materiales utilizados para construir la lámpara:

3 potenciómetros de 5k Ohms

1 anillo 24 led neopixel WS2812B

1 push button de 4 pines

1 sensor de temperatura LM35

1 fotoresistencia LDR (GL55)

1 arduino UNO R3

1 protoboard

Cables

Codigo

Moodlamp
Captura.PNG

//-------------------------------------Declaración de

variables globales-------------------------------------

int const ldrpin = A5; //Este es el pin para la fotoresistencia

const int tempSensor = A4; //Este es el pin para el sensor de temperatura

int ldrval = 0; //Este es el valor de la resistencia que pone la fotoresistencia

int cont; //Contador para cambiar de modo automático a modo manual

//--------------------------------------Adafruit_NeoPixel--------------------------------------------------------------------------------------------------

//En esta parte del código se incluye la librería de los NeoPixels.

#include

//Se define el pin en el que van a estar conectados.

#define PIN 3

//Se define el número de neopixeles del anillo.

#define NUMPIXELS 24

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//---------------------------------------------------------------------------------------------------------------------------------------------------------

void setup()

{

pixels.begin(); //Se inician los neopixles

pinMode(4, INPUT_PULLUP); //Se establece el pin 4 como un input con pullup digital

Serial.begin(9600); // Se inicia el serial a una velocidad de 9600 bits/seg

}

void loop(){

ldrval = analogRead(ldrpin); //El valor de la fotoresistencia es igyal a la señal recibida del pin análogo 5

ldrval = map(ldrval, 0,1023,0,400); // Se mapea el valor de la foto resistencia a un numero entre 0 y 400

int val = analogRead(tempSensor); // Se lee el valor del sensor de temperatura conectado al pin análogo 4

float voltaje = (val/1023.0)*5; //Se calcula el valor del voltaje de la señal del sensor de temperatura

float tempCelsius = (voltaje-0.5)*100; // El voltaje se convierte en grados celsius

double redColor = analogRead(0)/4.02; //Se asigna la cantidad de color rojo para el modo manual diviendo entre 40.2 para que el valor este entre 0 y 255

double greenColor = analogRead(1)/4.02; //Se asigna la cantidad de color verde para el modo manual diviendo entre 40.2 para que el valor este entre 0 y 255

double blueColor = analogRead(2)/4.02; //Se asigna la cantidad de color azul para el modo manual diviendo entre 40.2 para que el valor este entre 0 y 255

//Estos valores se comentariaron porque solo feuron para pruebas pero imprimen en el serial el valor de la fotoresistencia, la temperatura y el contador;

//Serial.println(ldrval);

//Serial.print(tempCelsius);

//Serial.print(cont);

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//Esto es lo que determina si se activa el modo manual o automatico

//Si el boton se presiona, entonces se le suma 1 al contador

int suma = digitalRead(4);

if (suma == HIGH) {

}

else

{

cont +=1;

delay(500);

}

//Si el contador es par se activa el modo automatico

if (cont%2==0){

for (int i=0; i < NUMPIXELS; i++)

{

if(ldrval>=200)//Si la lectura de la fotoresistencia es mayor o igual a 200

{

//Se compara si la temperatura es mayor que 25, 20 o cualquier otro valor y dependiendo del reultado se asigna un color

if (tempCelsius >= 25)

{

pixels.setPixelColor(i, pixels.Color(255, 0, 0));

pixels.show();

}

else if (tempCelsius >=20)

{

pixels.setPixelColor(i, pixels.Color(255, 255, 0));

pixels.show();

}

else

{

pixels.setPixelColor(i, pixels.Color(255, 255, 255));

pixels.show();

}

}

else if(ldrval >= 100)//Si la lectura de la fotoresistencia es mayor o igual a 100

{

//Se compara si la temperatura es mayor que 25, 20 o cualquier otro valor y dependiendo del reultado se asigna un color

if (tempCelsius >= 25)

{

pixels.setPixelColor(i, pixels.Color(0, 255, 0));

pixels.show();

}

else if (tempCelsius >=20)

{

pixels.setPixelColor(i, pixels.Color(0, 255, 255));

pixels.show();

}

else

{

pixels.setPixelColor(i, pixels.Color(0, 0, 255));

pixels.show();

}

}

else //Si la lectura de la fotoresistencia es cualquier otro valor

{

//Se compara si la temperatura es mayor que 25, 20 o cualquier otro valor y dependiendo del reultado se asigna un color

if (tempCelsius >= 25)

{

pixels.setPixelColor(i, pixels.Color(71, 0, 255));

pixels.show();

}

else if (tempCelsius >=20)

{

pixels.setPixelColor(i, pixels.Color(203, 90, 255));

pixels.show();

}

else

{

pixels.setPixelColor(i, pixels.Color(200, 90, 40));

pixels.show();

}

}

delay(100);

}

}

else //Si el contador es impar se activa el modo manual

{

for (int i=0; i < NUMPIXELS; i++)

{

//Se asigna a los neopixles el color de los sensores analogos 0, 1 y 2 como red, green y blue.

pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));

pixels.show();

delay(100);

}

}

}

Colocación De Potenciómetros En Protoboard

Empezaremos colocando los 3 potenciómetros en el protoboard

Conectarle un cable en la pata izquierda que vaya a tierra

Conectarle un cable en la pata central para

Conectarle un cable en la pata derecha que vaya a 5V

*Hacer esto con los 3 potenciómetros

Conectar Fotocelda

Colocar la fotocelda en el protoboard y agregarle una resistencia en la pata derecha y en la misma linea poner un cable que vaya directo a la placa R3 en el punto A0

En la otra pata conectarle un cable que vaya a 5V

Colocar Sensor De Temperatura

En la pata derecha colocarle un cable que vaya a 5V

En la pata central colocarle un cable que vaya directo a la placa R3 al apartado A1

En la pata izquierda colocarle un cable que vaya directo a tierra

Conectar El Neopixel

Localizar el apartado de IN en el neopixel y conectarlo con un cable directamente al apartado A4 ubicado en la placa R3

Localizar el apartado de 5V y conectarlo con un cable directamente al protoboard en el apartado de corriente.

Localizar el apartado de ground y conectarlo directamente al apartado de tierra en el protoboard.

Conectar El Boton

Conectar un cable que vaya del apartado 5 de la placa R3 a uno de los extremos del botón

Conectar un cable que vaya del botón a 5V en el protoboard

Conectar Corriente Y Tierra

Conectar un cable en el apartado de tierra en la placa R3 que vaya directamente a la linea de tierra en el protoboard.

Conectar un cable en el apartado de 5V ubicado en la placa R3 que vaya directamente a la linea de energía del protoboard.