#include <Arduino.h>
#include "DHT.h"
#include <BH1750.h> //libreria del sensor
#include <Wire.h> //libreria para manejar el protocolo I2C
#include "SSD1306Wire.h"
#define DHTPIN 17 // Digital pin connected to the DHT sensor
#define SDA 4 //pin serial data
#define SCL 15 //pin serial clock
#define SCREEN_ADRESS 0x3C //Direccion I2C de la pantalla
#define OLED_RST 16
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//creamos las instancias de los sensores
DHT dht(DHTPIN, DHTTYPE);
BH1750 lightMeter;
SSD1306Wire display(SCREEN_ADRESS, SDA, SCL);
void setup() {
//inicializamos comunicaciones
Serial.begin(115200);
//inicializamos el DHT
dht.begin();
//inicializamos el I2C con los pines 4 y 15
Wire.begin(SDA, SCL);
//inicializamos el sensor de luz
lightMeter.begin();
//mensajes para probar los sensores
Serial.println(F("DHTxx test!"));
Serial.println(F("BH1750 Test begin"));
//reset OLED
//pin 16 como salida digital
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, LOW);
delay(50);
digitalWrite(OLED_RST, HIGH);
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.clear();
}
void loop() {
//leemos los valores
//sensor de temperatura y humedad
float h = dht.readHumidity();
float t = dht.readTemperature();
//sensor de luz
float lux = lightMeter.readLightLevel();
// Comprueba los fallos
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
}else{
Serial.println("Humedad: " + String(h,0) + " Temperatura: " + String(t) + " °C");
}
if (isnan(lux)) {
Serial.println(F("Failed to read from BH1750 sensor!"));
}else{
Serial.println("Luz: " + String(lux) + " lx");
}
if (lux >= 1500){
Serial.println("Hay buena iluminación");
}else if(lux <= 1000){
Serial.println("Hay poca iluminación");
}
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 0, "Luz + Temperatura");
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 16, "LUZ: " + String(lux));
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(128, 32, "TEMPERATURA: " + String(t) + "C");
display.display();
}