#include <Wire.h> // libreria para bus I2C
#include <Adafruit_GFX.h> // libreria para pantallas graficas
#include <Adafruit_SSD1306.h> // libreria para controlador SSD1306
#define ANCHO 128 // reemplaza ocurrencia de ANCHO por 128
#define ALTO 64 // reemplaza ocurrencia de ALTO por 64
#define OLED_RESET 4 // necesario por la libreria pero no usado
#define valvula 7 // Pin 7 como salida para activar valvula
#define Led_ON 6 // Led indicador que valvula esta apagada
#define Led_OFF 5 // Led indicador que valvula esta encendida
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET); // Crea el objeto
const int analog_1 = 1; //Sensor de Nivel
int lectura = 0; //Lectura del sensor de Nivel
int nivel = 0; //Nivel de la Piscina
bool status_valvula, status_Led_1, status_Led_2;
String alarma = ""; //Alarma para indicar el proceso
String estado = ""; //Indica el estado de la valvula
unsigned long tiempo_inicio = 0; //Tiempo de inicio para temporizar
unsigned long tiempo = 0; //Variable que registra el tiempo
void setup() {
pinMode(valvula, OUTPUT); //Valvula
pinMode(Led_ON, OUTPUT); //Indicador valvula encendida
pinMode(Led_OFF, OUTPUT); //Indicador valvula apagada
Wire.begin(); // inicializa bus I2C
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializa pantalla con direccion 0x3C
tiempo_inicio = millis();
}
void loop() {
lectura = analogRead(analog_1);
nivel = map(lectura, 0, 4095, 0, 100); //Simulacion sensor de nivel de 0 a 100 %
if(nivel <= 20){
alarma = "Bajo Nivel";
status_valvula = 1;
status_Led_1 = 1;
status_Led_2 = 0;
estado = "ON";
}else{
alarma = "Nivel Normal";
status_valvula = 0;
status_Led_1 = 0;
status_Led_2 = 1;
estado = "OFF";
}
tiempo = millis() - tiempo_inicio;
if (tiempo >= 500) {
visualizacion ();
tiempo_inicio = millis();
}
digitalWrite(valvula, status_valvula); //Valvula de llenado
digitalWrite(Led_ON, status_Led_1); //Led indicador valvula encendida
digitalWrite(Led_OFF, status_Led_2); //Led indicador valvula apagada
}
void visualizacion () {
oled.clearDisplay(); // limpia pantalla
oled.setTextColor(WHITE); // establece color al unico disponible (pantalla monocromo)
oled.setCursor(0, 0); // ubica cursor en inicio de coordenadas 0,0
oled.setTextSize(1); // establece tamano de texto en 1
oled.print("Alarma: "); // escribe en pantalla el texto
oled.setCursor(45, 0);
oled.print(alarma);
oled.setTextSize(2);
oled.setCursor(0, 20);
oled.print("Valvula");
oled.setTextSize(2);
oled.setCursor(90, 20);
oled.print(estado);
oled.setTextSize(2);
oled.setCursor(0, 40);
oled.print("Nivel");
oled.setTextSize(2);
oled.setCursor(65, 40);
oled.print(nivel);
oled.print(" %");
oled.display();
}
Loading
esp32-c3-devkitm-1
esp32-c3-devkitm-1