carlosvolt
Published © LGPL

5 in 1 sensor: temperature, humidity, pressure, altitude and

The 5-in-1 Sensor is a combination of three different sensors integrated into a single device

IntermediateProtip151
5 in 1 sensor: temperature, humidity, pressure, altitude and

Story

Read more

Code

Source code

C/C++
Source code
/****************************************
 * Incluir librerias
 ****************************************/
#include <Wire.h>
#include "U8glib.h"//Librería para el control del display oled
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI Se habilita esta linea según el display a usar en este caso el driver
#include <Adafruit_BMP085.h>
#include <BH1750FVI.h>
#include "SparkFunHTU21D.h"
Adafruit_BMP085 bmp;
// Crea la instancia de Lightsensor.
BH1750FVI LightSensor(BH1750FVI::k_DevModeContLowRes);
//Crear una instancia del objeto  myHumidity
HTU21D myHumidity;
  float temperatura ;
  float humedad ;
  float presion ; 
  float altitud;
  uint16_t lux ;
void setup() {
  Serial.begin(115200);//Puerto serial a 115200
    //Verificamos si el sensor está bien conectado
    if (!bmp.begin()) {
  Serial.println("No se pudo encontrar un sensor BMP085 válido, verifique el cableado!");
  while (1) {}
  }
  LightSensor.begin();  
  myHumidity.begin();
  }  
void loop() {
/****************************************
 * Leemos el valor de cada uno de los sensores y lo asignamos a sus respectivas variables
 ****************************************/
   temperatura = bmp.readTemperature();
   humedad = myHumidity.readHumidity();
   presion = bmp.readPressure(); 
   altitud = bmp.readAltitude();
   lux = LightSensor.GetLightIntensity();
/****************************************
 * Imprimimos en el terminal serial los datos obtenidos
 ****************************************/
  //Temperatura    
  Serial.print("Temperatura = ");
  Serial.print(temperatura);
  Serial.println(" *C");
  //Humedad
  Serial.print("Humedad: ");
  Serial.print(humedad, 2);
  Serial.println("%");
  //Presión
  Serial.print("Presion = ");
  Serial.print(presion);
  Serial.println(" Pa");
  //Altitud
  Serial.print("Altitud = ");
  Serial.print(altitud);
  Serial.println(" metros");
  //Intensidad de luz
  Serial.print("Luz: ");
  Serial.println(lux);
//Funcíon para mostrar los datos obtenidos en el display
oled();
delay(1000);
}
//Funcíon para mostrar texto en el dislplay oled
void oled(){
u8g.firstPage();  
  do {
    draw();//Llama a la función draw
  } while( u8g.nextPage() );
  // Reconstruir la imagen después de un tiempo
  delay(50);
  }
void draw(void) {
  //Temperatura
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(0, 10); 
  u8g.print("TEMP: ");//
  u8g.print(temperatura, 2);
  //Humedad
  u8g.setPrintPos(0, 22); 
  u8g.print("HUME: ");
  u8g.print(humedad, 2);//
  //Presión
  u8g.setPrintPos(0, 34); 
  u8g.print("PRES: ");
  u8g.print(presion, 0);
  //Altitud
  u8g.setPrintPos(0, 46); 
  u8g.print("ALTI: ");
  u8g.print(altitud, 2);
  //Intensidad de luz
  u8g.setPrintPos(0, 58); 
  u8g.print("LUZ : ");
  u8g.print(lux);  
  }

Credits

carlosvolt
34 projects • 4 followers

Comments