#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Crear una instancia de la pantalla OLED
Adafruit_SSD1306 display(128, 64, &Wire, -1); // -1 si no usas un pin de reset
int conta=0;
int pinRojo = 18;
int pinAmarillo = 5;
int pinVerde = 17;
//buzzer
int buzzerPin = 14;
// Icono de WiFi en formato de matriz de bits
const unsigned char wifiIcon [] PROGMEM = {
0b00000000, 0b00000000,
0b00000111, 0b11000000,
0b00001111, 0b11110000,
0b00011111, 0b11111000,
0b00111111, 0b11111100,
0b01111111, 0b11111110,
0b00000000, 0b00000000,
0b00000000, 0b00111000,
0b00000000, 0b00111000,
0b00000000, 0b00111000,
};
float temperatura = random(20, 30) + random(0, 100) / 100.0; // Temperatura entre 20.00 y 30.00
float humedad = random(30, 60) + random(0, 100) / 100.0; // Humedad entre 30.00 y 60.00
bool ledState = false;
void pintarCuadro(){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(0.5);
display.setFont(NULL);
display.setCursor(5, 5);
display.println("HELLO WORLD");
display.drawRect(0, 0, 128, 64, 1);
display.drawRect(0, 0, 128, 15, 1);
display.drawRect(0, 14, 75, 35, 1);
display.drawRect(74, 14, 75, 50, 1);
}
void setup() {
// Iniciar la comunicación I2C y la pantalla
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Cambia la dirección si es necesario
display.clearDisplay(); // Limpiar la pantalla
//Configurar Pines
pinMode(pinRojo, OUTPUT);
pinMode(pinAmarillo, OUTPUT);
pinMode(pinVerde, OUTPUT);
//Configurar buzzer
pinMode(buzzerPin, OUTPUT);
// Mostrar el contenido en la pantalla
display.display();
delay(2000);
}
void loop() {
display.clearDisplay();
digitalWrite(pinRojo, LOW);
digitalWrite(pinAmarillo, LOW);
digitalWrite(pinVerde, LOW);
tone(buzzerPin, 0);
pintarCuadro();
temperatura = random(0, 40) + random(0, 100) / 100.0; // Temperatura entre 20.00 y 30.00
humedad = random(30, 60) + random(0, 100) / 100.0;
ledState = !ledState;
/*display.setCursor(0, 0); // Posición del cursor
display.print("Conta: 0"); // Mensaje a mostrar
display.print(conta); // Mensaje a mostrar
conta++;*/
//Logica de temperatura
if(temperatura > 25){
digitalWrite(pinRojo, HIGH);
tone(buzzerPin, 500);
}else if(temperatura < 25 && temperatura >=15){
digitalWrite(pinAmarillo, HIGH);
}else if(temperatura < 15){
digitalWrite(pinVerde, HIGH);
}
display.setCursor(5, 18);
display.print("Conta:");
display.print(conta);
conta++;
display.setCursor(5, 28);
display.print("Temp:");
display.print(temperatura);
display.setCursor(5, 38);
display.print("Humed:");
display.print(humedad);
display.setCursor(5, 52);
display.print("Led: ");
display.print(ledState ? "ON" : "OFF");
display.display();
delay(1000);
}