#include <Wire.h>
#include <EEPROM.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Thermistor.h>
#include <NTC_Thermistor.h>
#include <AverageThermistor.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
#define SENSOR_PIN A0
#define REFERENCE_RESISTANCE 10000
#define NOMINAL_RESISTANCE 10000
#define NOMINAL_TEMPERATURE 25
#define B_VALUE 3680
#define READINGS_NUMBER 10
#define DELAY_TIME 10
Thermistor* thermistor = NULL;
void setup() {
Serial.begin(9600);
Thermistor* originThermistor = new NTC_Thermistor(SENSOR_PIN,REFERENCE_RESISTANCE,NOMINAL_RESISTANCE,NOMINAL_TEMPERATURE,B_VALUE);
thermistor = new AverageThermistor(originThermistor,READINGS_NUMBER,DELAY_TIME);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println("No se pudo detectar la pantalla OLED. Conecte la pantalla y reinicie el programa.");
while (1);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5,0); display.println("Menu:");
display.setCursor(0,10);display.println("Temperatura");
display.display();
Serial.println("Menu:");
}
void loop() {
const double celsius = thermistor->readCelsius();
const double fahrenheit = thermistor->readFahrenheit();
if (Serial.available()>0) {
int opcion = Serial.read() - '0';
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5,0); display.println("Inserte numero:");
display.setCursor(0,10); display.println("1. Celsius");
display.setCursor(0,20); display.println("2. Fahrenheit");
// display.display();
switch (opcion)
{
case 1:
display.setCursor(0,30); display.print("Temperatura: ");
display.print(celsius); display.print(" C");
Serial.print(celsius); Serial.println(" C");
break;
case 2:
display.setCursor(0,30); display.print("Temperatura: ");
display.print(fahrenheit); display.print(" F");
Serial.print(fahrenheit); Serial.println(" F");
break;
}
display.display();
}
}