#include <Config.h>
#include <EasyBuzzer.h>
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <DFRobot_DHT11.h>
#include <ESP32Servo.h>
#include <analogWrite.h>
#include <ESP32Tone.h>
#include <ESP32PWM.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define RELE 33
#define SERVO_PIN 18
#define DHT11_PIN 2
Servo myservo;
DFRobot_DHT11 DHT;
int pos = 0; // variable para almacenar la posición del servo
int sensorPin = 27;
int sensorValue = 0;
int thresholdValue = 1250;
int pin = 32;
// parámetros del buzzer
unsigned int frequency = 100;
unsigned int beeps = 2;
void setup() {
Serial.begin(9600);
myservo.attach(SERVO_PIN);
EasyBuzzer.setPin(pin);
// Iniciar pantalla OLED en la dirección 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;)
; // Don't proceed, loop forever
}
pinMode(sensorPin, INPUT);
pinMode(RELE, OUTPUT);
// Limpiar buffer de display
display.clearDisplay();
// Tamaño del texto
display.setTextSize(1);
// Color del texto
display.setTextColor(1);
// Posición del texto
display.setCursor(1, 1);
//Activar página de código 437
display.cp437(true);
}
void loop() {
// Leer el valor del sensor de humedad en tierra
int sensorValue = analogRead(sensorPin);
DHT.read(DHT11_PIN);
Serial.print(DHT.temperature);
Serial.println("°C Temp Ambiente y ");
Serial.print(DHT.humidity);
Serial.println(" % Humedad Ambiente.");
display.println("AMBIENTE: ");
display.print(DHT.temperature);
display.println(" C y ");
display.print(DHT.humidity);
display.println(" % humedad");
display.println();
Serial.print(sensorValue);
display.print(sensorValue);
if (sensorValue > thresholdValue) {
EasyBuzzer.stopBeep();
display.println();
display.println(" => HUMEDAD TIERRA OK");
Serial.println(" => HUMEDAD TIERRA OK");
digitalWrite(RELE, LOW);
myservo.write(pos = 0);
delay(4000);
display.display();
} else {
display.println();
Serial.println(" HUMEDAD TIERRA BAJA => RIEGO ACTIVADO");
display.println(" HUMEDAD TIERRA BAJA => RIEGO ACTIVADO");
digitalWrite(RELE, HIGH);
EasyBuzzer.beep(frequency, beeps);
delay(80);
EasyBuzzer.stopBeep();
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
delay(4000);
display.display();
}
delay(1000);
display.clearDisplay();
display.setCursor(1, 1);
}