#include <Wire.h>
#include <DHT.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define ANCHO 128 //definir tamño del display
#define ALTO 64
const long A = 1000; //Resistencia en oscuridad en KΩ
const int B = 15; //Resistencia a la luz (10 Lux) en KΩ
const int Rc = 10; //Resistencia calibracion en KΩ
const int LDRPin = A0; //Pin del LDR
int V;
int ilum;
#define OLED_RESET 4
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Wire.begin();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Inicializamos comunicación serie, activamos monitor en serie para la visualizacion de los parametros
Serial.begin(9600);
// Comenzamos el sensor DHT, con la sentencia begin()
dht.begin();
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
V = analogRead(LDRPin);
// ilum = ((long)(1024-V)*A*10)/((long)B*Rc*V); //usar si LDR entre GND y A0
ilum = ((long)V*A*10)/((long)B*Rc*(1024-V)); //usar si LDR entre A0 y Vcc (como en el esquema anterior)
// Check if any reads failed and exit early (to try again).
if (isnan(t) || isnan(h)) {
Serial.println(F("Error obteniendo los datos del sensor DHT22"));
return;
}
Serial.print(F("Humidity: "));
Serial.println(h);
Serial.print(F("Luz: "));
Serial.println(ilum);
// Wait a few seconds between measurements.
delay(500);
oled.clearDisplay();
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.setTextSize(1);
oled.print("Humedad: ");
oled.setCursor (5, 10);
oled.setTextSize(2);
oled.print(h);
oled.setCursor(70, 10);
oled.setTextSize(2);
oled.print("%");
oled.setCursor(0, 30);
oled.setTextSize(1);
oled.print("Temperatura: ");
oled.setCursor (5, 40);
oled.setTextSize(2);
oled.print(t);
oled.setCursor(70, 40);
oled.setTextSize(2);
oled.print("C");
oled.display();
}