#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int led = 12;
const int led2 = 13;
const int led3 = 14;
const int potPin = 34;
bool ledState = LOW;
void setup() {
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 error de asignacion"));
for(;;);
}
display.display(); // Limpiar la pantalla
delay(2000); // Pausa de inicio
display.clearDisplay();
}
void loop() {
int sensorValue = analogRead(potPin);
int temperature = map(sensorValue, 0, 4095, 0, 1000);
// Mostrar la temperatura actual en la pantalla OLED
display.clearDisplay();
display.setTextSize(1.5);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print(temperature);
display.display();
// Lógica de control de LEDs y mensajes
if (temperature >= 0 && temperature <= 300) {
// Temperatura correcta
{ledState = !ledState;
digitalWrite(led, ledState);
{
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led,LOW);
delay(100);
}
}} if (temperature >= 300 && temperature <= 600){
// Temperatura baja
{ledState = !ledState;
digitalWrite(led2, ledState);
{
digitalWrite(led2, HIGH);
delay(100);
digitalWrite(led2,LOW);
delay(100);
}
}} if (temperature >= 600 && temperature <= 1000){
// Temperatura alta (quemado)
{ledState = !ledState;
digitalWrite(led3, ledState);
{
digitalWrite(led3, HIGH);
delay(100);
digitalWrite(led3,LOW);
delay(100);
}
}
}
delay(100); // Pequeña pausa para evitar fluctuaciones
}