#include <U8g2lib.h>
#include <DHT.h>
#define SENSOR_TEMP 15 //fijarse bien el numero
#define LED 16
#define P1 0
#define P2 1
#define BOTON1 26
#define BOTON2 25
DHT dht(15, DHT22);
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
int temp;
int umbral = 23;
int estadoActivo = P1;
char stringumbral[5];
char stringtemp[5];
void setup() {
Serial.begin(9600);
u8g2.begin();
dht.begin();
pinMode(SENSOR_TEMP, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
maquinaEstado();
if (dht.readTemperature() >= umbral) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
delay(1000);
}
void maquinaEstado() {
Serial.println(estadoActivo);
switch (estadoActivo) {
case P1:
temp = dht.readTemperature();
Serial.println(temp);
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
sprintf(stringtemp, "%d", temp); ///convierto el valor float a string
u8g2.drawStr(15, 20, "Temp:");
u8g2.drawStr(70, 20, stringtemp);
u8g2.drawStr(90, 20, "C");
u8g2.drawStr(15, 50, "Umbral:");
sprintf(stringumbral, "%d", umbral); ///convierto el valor float a string
u8g2.drawStr(70, 50, stringumbral);
u8g2.drawStr(90, 50, "C");
u8g2.sendBuffer(); // transfer internal memory to the display
if (digitalRead(BOTON1) == 0 && digitalRead(BOTON2) == 0) {
estadoActivo = P2;
}
break;
case P2:
if (digitalRead(BOTON1) == 0) {
umbral++;
}
if (digitalRead(BOTON2) == 0) {
umbral--;
}
if (digitalRead(BOTON1) == 0 && digitalRead(BOTON2) == 0) {
estadoActivo = P1;
}
break;
}
}