Reporte de Sensores y Lcd Rgb1

16
UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA. SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN. TUXTLA GUTIÉRREZ, 06/JULIO/2012 1 SENSORES BMP085, TSL2561 y LCD RGB OBJETIVO: Obtener las lecturas de temperatura ( °C), presión (pascal), altitud (msnm), cantidad de luz existente (luxes) y mostrarlos en un LCD rgb, el cual hará una transición de colores de fondo con las combinaciones posibles del rojo, verde y azul. MATERIALES Y DESCRIPCIÓN: 1. SENSOR BMP085 DE ADAFRUIT: El BMP085 es un sensor básico que se ha diseñado específicamente para medir la presión barométrica y la temperatura, pero debido a los cambios de presión con la altitud también se puede utilizar como un altímetro, ya que a medida que caminamos a partir del nivel del mar a una montaña alta, la presión del aire disminuye. Otro uso importante para la medición de la presión, es predecir el tiempo, ya que es sabido que cuando la presión disminuye, es porque el aire es más caliente, por lo tanto menos denso, esto generalmente se asocia a un mal tiempo, desde leves lluvias hasta tormentas más grandes. Se establece como baja presión cuando se sitúa por debajo de 1013.25 hpa, que es el valor aproximado de una presión estándar. DETALLES TÉCNICOS. • Vin: de 3 a 5 VCC • Lógica: compatible con valores de 3 a 5 VCC Rangos de operación: presión: 300-1100 hPa (500 a 9000msnm) • Hasta 0.03hPa / 0,25 m de resolución Temperatura: - 40 a + 85 ° C, ± 2 ° C precisión de la temperatura

Transcript of Reporte de Sensores y Lcd Rgb1

Page 1: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

1

SENSORES BMP085, TSL2561 y LCD RGB

OBJETIVO:

Obtener las lecturas de temperatura ( °C), presión (pascal), altitud (msnm),

cantidad de luz existente (luxes) y mostrarlos en un LCD rgb, el cual hará una

transición de colores de fondo con las combinaciones posibles del rojo, verde y

azul.

MATERIALES Y DESCRIPCIÓN:

1. SENSOR BMP085 DE ADAFRUIT:

El BMP085 es un sensor básico que se ha diseñado específicamente para medir

la presión barométrica y la temperatura, pero debido a los cambios de presión con

la altitud también se puede utilizar como un altímetro, ya que a medida que

caminamos a partir del nivel del mar a una montaña alta, la presión del aire

disminuye. Otro uso importante para la medición de la presión, es predecir el

tiempo, ya que es sabido que cuando la presión disminuye, es porque el aire es

más caliente, por lo tanto menos denso, esto generalmente se asocia a un mal

tiempo, desde leves lluvias hasta tormentas más grandes. Se establece como baja

presión cuando se sitúa por debajo de 1013.25 hpa, que es el valor aproximado de

una presión estándar.

DETALLES TÉCNICOS.

• Vin: de 3 a 5 VCC

• Lógica: compatible con valores de 3 a 5 VCC

• Rangos de operación: presión: 300-1100 hPa (500 a 9000msnm)

• Hasta 0.03hPa / 0,25 m de resolución

• Temperatura: - 40 a + 85 ° C, ± 2 ° C precisión de la temperatura

Page 2: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

2

MONTAJE CON ARDUINO:

CONSIDERACIONES TEÓRICAS:

El código empleado se muestra en el anexo, un detalle a considerar con este

sensor, es la determinación de la altitud, ya que esta se obtiene mediante el

comando bmp.readTemperature(), pero estimando una presión estándar de

1013.25hpa, es decir, que puede no ser precisa, dependiendo de los valores

actuales, por lo que se permite escribir el valor de presión que se considere

adecuado, el modo correcto es revisar en alguna pagina del clima, la presión a

nivel del mar actual donde se desee medir la altitud, para este ejemplo

corresponde a un valor no muy lejano del estándar: 1014hpa, que es el nivel de

presión actual en Chiapas. Para determinar la altitud real se escribe el comando

como sigue: bmp.readAltitude(101400).

La presión atmosférica en un punto coincide numéricamente con el peso de una

columna estática de aire de sección recta unitaria que se extiende desde ese

punto hasta el límite superior de la atmósfera. Como la densidad del aire

disminuye conforme aumenta la altura, no se puede calcular ese peso a menos

que seamos capaces de expresar la variación de la densidad del aire ρ en función

de la altitud z o de la presión p. Por ello, no resulta fácil hacer un cálculo exacto de

la presión atmosférica sobre un lugar de la superficie terrestre; por el contrario, es

muy difícil medirla, por lo menos, con cierta exactitud ya que tanto la temperatura

como la presión del aire están variando continuamente .

Page 3: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

3

La presión atmosférica en un lugar determinado experimenta variaciones

asociadas con los cambios meteorológicos. Por otra parte, en un lugar

determinado, la presión atmosférica disminuye con la altitud, como se ha dicho. La

presión atmosférica decrece a razón de 1 mmHg o Torr por cada 10 m de

elevación en los niveles próximos al del mar. En la práctica se utilizan unos

instrumentos, llamados altímetros, que son simples barómetros aneroides

calibrados en alturas; estos instrumentos no son muy precisos.

La presión atmosférica normalizada, 1 atmósfera, fue definida como la presión

atmosférica media al nivel del mar que se adoptó como exactamente 101 325 Pa o

760 Torr. Sin embargo, a partir de 1982, la IUPAC recomendó que si se trata de

especificar las propiedades físicas de las sustancias "el estándar de presión"

debía definirse como exactamente 100 kPa o (≈750,062 Torr). Aparte de ser un

número redondo, este cambio tiene una ventaja práctica porque 100 kPa

equivalen a una altitud aproximada de 112 metros, que está cercana al promedio

de 194 m de la población mundial. (Wikipedia)

En el siguiente cuadro se muestra la relación de presión y altitud.

Presión en función de la altitud ()

Altitud

(m) 0 100 200 300 400 500 600 700 800 900

0 1013 1001 990 978 967 955 944 933 921 901

1000 899 888 877 867 856 845 835 825 816 805

2000 795 785 776 766 757 747 738 729 719 710

3000 701 693 684 676 667 658 650 641 633 624

4000 616 608 600 593 585 577 570 562 555 547

5000 540 533 526 519 512 505 498 492 485 479

Fuente: http://www.tutiempo.net/silvia_larocca/Temas/ecuaciones.htm#humedad

La fórmula para obtener la presión en función de la altitud es la siguiente

P1 = Po / EXP [Z * g /( R * Tm)] P1= Presión a una altitud de Z metros (en Hpa) Po= Presión en superficie (en Hpa) Z= altitud del nivel de presión P1 (en metros) g= aceleración de la gravedad = 9.80617 m/seg2 R= Constante de los gases =287.04 m2/seg2ºK

Page 4: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

4

Tm = Temperatura media entre los niveles de presión P1 y Po - Se puede escribir como Tm = (To + T1) / 2 y como T1=To-g*Z, podemos escribir Tm=(To+To-(g*Z))/2 => Tm=To-g*Z/2 , donde To es la temperatura en superficie (en ºK), g es el gradiente térmico vertical y Z es la altitud Si tenemos en cuenta una atmósfera standard Po = 1013.3 Hpa To = 15ºC = 288ºK g = 0.65ºC/100 m Reemplazando en la fórmula original, la fórmula para una atmósfera standard es:

P1 = 1013.3 / EXP [Z /(8430.15 - Z * 0.09514)] donde: P1 = Presión en Hpa a la altitud Z Z = altitud en m 2. SENSOR TSL2561 DE ADAFRUIT:

Este sensor encuentra su uso en una amplia gama de situaciones de la luz,

además es más preciso que otros como los LDR, lo que permite cálculos exactos

de lux existente y se puede configurar para diferentes rangos de ganancia / tiempo

con lo que se pueden detectar rangos de luz de 0,1 - 40.000 + Lux sobre la

marcha. La mejor parte de este sensor es que contiene diodos infrarrojos y de

espectro completo. Eso significa que se puede medir por separado la luz infrarroja

de amplio espectro o humano visible. La mayoría de los sensores sólo pueden

detectar uno o el otro, que no representan con exactitud lo que los ojos humanos

ven (ya que no podemos percibir la luz infrarroja que es detectada por la mayoría

de los fotodiodos).

El sensor tiene una cámara digital (I2C) de la interfaz. Puede seleccionar una de

tres direcciones por lo que puede tener hasta tres sensores en una tabla, cada uno

con una dirección I2C diferente. Cuenta con ADC, lo que significa puede usarse

con cualquier microcontrolador, incluso si no tiene entradas analógicas. El

consumo de corriente es muy bajo, por lo que es genial para los datos de baja

potencia-sistemas de registro.

DETALLES TÉCNICOS.

• Se aproxima a la respuesta del ojo humano

• Precisa iluminancia (lumen) en distintas condiciones de iluminación

• Rango de temperatura: de -30 a 80 °C

Page 5: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

5

• Rango dinámico (Lux): de 0,1 a 40.000 Lux

• Rango de voltaje: 2.7-3.6V

• Interfaz: I2C

MONTAJE CON ARDUINO.

CONSIDERACIONES TEÓRICAS:

El lux (símbolo lx) es la unidad derivada del Sistema Internacional de Unidades para la iluminancia o nivel de iluminación. Equivale a un lumen /m². Se usa en fotometría como medida de la intensidad luminosa, tomando en cuenta las diferentes longitudes de onda según la función de luminosidad, un modelo estándar de la sensibilidad a la luz del ojo humano. 1 lx

= 1 lm/m2

= 1 cd · sr/m2

El lux es una unidad derivada, basada en el lumen, que a su vez es una unidad derivada basada en la candela. Un lux equivale a un lumen por metro cuadrado, mientras que un lumen equivale a una candela x estereorradián. El flujo luminoso total de una fuente de una candela

equivale a lúmenes (puesto que una esfera comprende estereorradianes). (Wikipedia)

Page 6: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

6

Para comprender mejor lo que es un lux se anexa el siguiente cuadro

Fuente: wikipedia

Iluminancia Abr. Ejemplo

0,00005 lux 50 µlx Luz de una estrella (Vista desde la tierra)

0,0001 lux 100 µlx Cielo nocturno nublado, luna nueva

0,001 lux 1 mlx Cielo nocturno despejado, luna nueva

0,01 lux 10 mlx Cielo nocturno despejado, cuarto creciente o menguante

0,25 lux 250 mlx Luna llena en una noche despejada

1 lux 1 lx Luna llena a gran altitud en latitudes tropicales

3 lux 3 lx Límite oscuro del crepúsculo bajo un cielo despejad

50 lux 50 lx Sala de una vivienda familiar

80 lux 80 lx Pasillo/cuarto de baño

400 lux 4 hlx Oficina bien iluminada

400 lux 4 hlx Salida o puesta de sol en un día despejado.

1000 lux 1 klx Iluminación habitual en un estudio de televisión

32.000 lux 32 klx Luz solar en un día medio (mín.)

100.000 lux 100 klx Luz solar en un día medio (máx.)

Page 7: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

7

3. LCD RGB DE ADAFRUIT:

Esta es una actualización a la norma 16x2 LCD, en lugar de tener color azul y

blanco, o rojo y negro, este LCD tiene caracteres negros sobre una luz de fondo,

color RGB. Eso significa que se puede cambiar el color de fondo a todo lo que se

requiera - rojo, verde, azul, rosa, blanco, amarillo morado, verde azulado, salmón

o simplemente lo deja fuera de un fondo neutro.

MONTAJE CON ARDUINO.

Este dispositivo se conecta típicamente como se muestra en el diagrama, como se

mencionó antes es un LCD de 16 columnas x 2 filas su funcionamiento es similar a

un LCD normal, solo que este tiene la peculiaridad de poder variarse la luz de

fondo emitida, por lo que con el código que se muestra en el anexo, se hace una

variación de los tres led´s (RGB) de manera ascendente y descendente en forma

intercalada, para obtener una amplia gama de colores visibles.

REFERENCIAS:

www.adafruit.com

www.wikipedia.com

http://www.tutiempo.net/silvia_larocca/Temas/ecuaciones.htm#humedad

Page 8: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

8

ANEXOS:

MONTAJE FINAL:

Montaje final

Caso 1. < 5, enciende el led indicador, según se establece en el código

Page 9: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

9

Caso 2. Lux > 5 y temp < 28°C, ambos leds indicadores permencen en Off,

según código

Caso 3. Temp > 28°C, enciende led Caso 4. temp > 28°C y lux < 5,

indicador. se activan ambos indicadores.

Page 10: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

10

CÓDIGO PARA DETERMINAR, TEMPERATURA, PRESIÓN, ALTURA Y

ALTURA REAL USANDO EL BMP085:

#include <Wire.h>

#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

//se incluyen las librerias adecuadas.

void setup() {

Serial.begin(9600);

bmp.begin();

}

void loop() {

Serial.print("Temperatura = ");

Serial.print(bmp.readTemperature()); //con este comando se lee la temperatura

// del sensor y se imprime en pantalla

Serial.println(" *C");

Serial.print("Presion = ");

Serial.print(bmp.readPressure()); // lee la presión del sensor y se imprime en

//pantalla

Serial.println(" Pa");

Serial.print("Altitude = ");

Serial.print(bmp.readAltitude()); //lee la altura del sensor asumiendo una

//presión estándar de 1013.25 hpa

Serial.println(" meters");

Serial.print("Real altitude = ");

Serial.print(bmp.readAltitude(101400)); //este comando permite introducir el

//valor actualizado de la presión

//atmosférica al nivel del mar, que en

//estos momentos (checando una

//pagina de internet del clima mundial),

//para la región de Chiapas se

//encuentra a 1014 hpa

Serial.println(" meters");

Serial.println();

delay(500);}

Page 11: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

11

CÓDIGO PARA DETERMINAR CANTIDAD DE LUZ INFRARROJA (ir),

ESPECTRO COMPLETO (full), HUMANO VISIBLE (visible) Y LUXES (lux)

INCIDENTE.

#include <Wire.h>

#include <TSL2561.h>

TSL2561 tsl(TSL2561_ADDR_FLOAT);

// se incluyen las librerias adecuadas.

void setup(void) {

Serial.begin(9600);

if (tsl.begin()) {

Serial.println("Found sensor");

} else {

Serial.println("No sensor?");

while (1);

}

//tsl.setGain(TSL2561_GAIN_0X); //con estos comandos puede cambiarse la

//ganancia en el tiempo, para adaptarse de

//brillo intense a atenuado.

tsl.setGain(TSL2561_GAIN_16X);

// puede cambiarse el tiempo de sensado

//de la intensidad de luz

tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);//corto

//tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS);//medio

//tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS); //largo

}

void loop(void) {

uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE);

//uint16_t x = tsl.getLuminosity(TSL2561_FULLSPECTRUM);

//uint16_t x = tsl.getLuminosity(TSL2561_INFRARED);

//con estos comandos se elige entre, luz visible, espectro completo o infrarrojo

Serial.println(x, DEC);

uint32_t lum = tsl.getFullLuminosity();

uint16_t ir, full;

ir = lum >> 16;

full = lum & 0xFFFF;

Serial.print("IR: "); Serial.print(ir); Serial.print("\t\t\t");

Page 12: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

12

Serial.print("Full: "); Serial.print(full); Serial.print("\t");

Serial.print("Visible: "); Serial.print(full - ir); Serial.print("\t");

Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir));

/*aqui se calcula mediante los comandos correspondientes la cantidad de luz ir,

visible y de espectro complete, finalmente la cantidad de lux, y se Mandan a

imprimir a pantalla*/

delay(100); }

CÓDIGO DEL LCD RGB, PARA VARIAR LOS COLORES DE FORMA

CONSECUTIVA, ASCENDENTE Y DESCENDENTE.

// include the library code:

#include <LiquidCrystal.h>

#include <Wire.h>

#define REDLITE 3

#define GREENLITE 5

#define BLUELITE 6

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int brillo = 255;

void setup() {

Serial.begin(9600);

lcd.begin(16, 2);

lcd.setCursor(6,0);

lcd.print("Hola");

lcd.setCursor(6,1);

lcd.print("mundo");

brillo = 255;

} void loop() { //variación de los colores emitidos de 0 a 255 y viceversa

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

{ setBacklight(i, 0, 255-i);

delay(5); }

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

{ setBacklight(255-i, i, 0);

delay(5); }

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

{ setBacklight(0, 255-i, i);

Page 13: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

13

delay(5); }

}

void setBacklight(uint8_t r, uint8_t g, uint8_t b) {

r =map(r, 0, 255, 0, 100);

g =map(g, 0, 255, 0, 150);

r =map(r, 0, 255, 0, brillo);

g =map(g, 0, 255, 0, brillo);

b =map(b, 0, 255, 0, brillo);

r =map(r, 0, 255, 255, 0);

g =map(g, 0, 255, 255, 0);

b =map(b, 0, 255, 255, 0);

Serial.print("R = ");

Serial.print(r, DEC);

Serial.print(" G = ");

Serial.print(g, DEC);

Serial.print(" B = ");

Serial.println(b, DEC);

analogWrite(REDLITE, r);

analogWrite(GREENLITE, g);

analogWrite(BLUELITE, b);

}

CÓDIGO PARA SENSAR TEMPERATURA, PRESIÓN ATMOSFÉRICA,

ALTITUD SNM Y CANTIDAD DE LUXES Y ACTIVAR O APAGAR UN CLIMA Y

UNA LÁMPARA SEGÚN SEA EL CASO REQUERIDO

#include <LiquidCrystal.h>

#include <Wire.h>

#include <TSL2561.h>

TSL2561 tsl(TSL2561_ADDR_FLOAT);

#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

#define REDLITE 3

#define GREENLITE 5

#define BLUELITE 6

Page 14: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

14

int Led_temp = 13;

int Led_lux = 2;

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //iniciar la libreria con esos pines

int brillo = 255;

void setup() {

Serial.begin(9600);

pinMode (Led_temp, OUTPUT);

pinMode (Led_lux, OUTPUT);

bmp.begin();

lcd.begin(16, 2);

brillo = 255;

if (tsl.begin()) {

Serial.println("Leyendo sensores");

} else {

Serial.println("No sensor?");

while (1);

}

tsl.setGain(TSL2561_GAIN_16X);

tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);

}

void loop() {

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

{

setBacklight(i, 0, 255-i);

delay(5);

}

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

{

setBacklight(255-i, i, 0);

delay(5);

}

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

{

setBacklight(0, 255-i, i);

delay(5);

Page 15: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

15

}

uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE);

uint32_t lum = tsl.getFullLuminosity();

uint16_t ir, full;

ir = lum >> 16;

full = lum & 0xFFFF;

if (tsl.calculateLux(full, ir)< 5) //apagar o encender lampara, segun condición

{

digitalWrite (Led_lux,1);

}

else

{

digitalWrite (Led_lux,0);

}

//imprimir lux en pantalla y en lcd

Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir));

delay(5);

lcd.setCursor (9,1);

lcd.print ("Lux: "); lcd.print (tsl.calculateLux(full, ir));

//imprimir temperatura en pantalla y en lcd

Serial.print("Temperatura = ");

Serial.print(bmp.readTemperature());

Serial.println(" *C");

lcd.setCursor (10,0);

lcd.print (bmp.readTemperature()); lcd.print ("C");

//imprimir presion en pantalla y en lcd

Serial.print("Presion = ");

Serial.print(bmp.readPressure());

Serial.println(" Pa");

lcd.setCursor (0,1); lcd.print(bmp.readPressure()); lcd.print ("Pa");

//imprimir altitud con presión estandar en pantalla y en lcd

Serial.print("Altitud = ");

Serial.print(bmp.readAltitude());

Page 16: Reporte de Sensores y Lcd Rgb1

UNIVERSIDAD DE CIENCIA Y TECNOLOGÍA DESCARTES. MAESTRÍA EN TECNOLOGÍAS DE LA INFORMÁTICA.

SISTEMAS DIGITALES 2. SARAÍN ESCOBEDO DE LEÓN.

TUXTLA GUTIÉRREZ, 06/JULIO/2012

16

Serial.println(" msnm");

//imprimir altitud con presión actual en pantalla y en lcd

Serial.print("Real altitude = ");

Serial.print(bmp.readAltitude(101400));

Serial.println(" msnm");

Serial.println();

delay(10);

lcd.setCursor (0,0);

lcd.print (bmp.readAltitude(101400)); lcd.print ("mts");

}

void setBacklight(uint8_t r, uint8_t g, uint8_t b) {

r =map(r, 0, 255, 0, 100);

g =map(g, 0, 255, 0, 150);

r =map(r, 0, 255, 0, brillo);

g =map(g, 0, 255, 0, brillo);

b =map(b, 0, 255, 0, brillo);

r =map(r, 0, 255, 255, 0);

g =map(g, 0, 255, 255, 0);

b =map(b, 0, 255, 255, 0);

analogWrite(REDLITE, r);

analogWrite(GREENLITE, g);

analogWrite(BLUELITE, b);

if (bmp.readTemperature()>= 28) //apagar o encender el clima según condición

{

digitalWrite (Led_temp,1);

}

else

{

digitalWrite (Led_temp,0);

}

}