#include <TimerOne.h>
#define TERMO A1
int dig1 = 9;
int dig2 = 10;
int t = 0;
int dec;
int uni;
int A = 0;
int v_set; // Será la temperatura seteada por el potenciómetro
// Pines para los segmentos A-G del display de 7 segmentos
#define A 2 // Segmento A
#define B 3 // Segmento B
#define C 4 // Segmento C
#define D 5 // Segmento D
#define E 6 // Segmento E
#define F 7 // Segmento F
#define G 8 // Segmento G
int A_val = 0; // Variable para el número a mostrar
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
Serial.begin(9600);
pinMode(dig1, OUTPUT);
pinMode(dig2, OUTPUT);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(G, HIGH);
digitalWrite(dig2, HIGH);
digitalWrite(dig1, HIGH);
Timer1.initialize(1000); // 1 ms
Timer1.attachInterrupt(ISR_Blink); // Configuramos la interrupción
A_val = 0;
}
void ISR_Blink() {
noInterrupts();
A = 1;
interrupts();
}
void loop() {
if (A == 1) {
A = 0;
t++;
if (t >= 1000) { // Cada segundo
int termoValue = analogRead(TERMO);
const float BETA = 3950;
float celsius = 1 / (log(1 / (1023. / termoValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperatura: ");
Serial.print(celsius);
Serial.println(" C");
dec = celsius / 10;
uni = (int)celsius % 10;
// Aquí debería estar la lectura del potenciómetro para ajustar v_set
// Simular un valor para v_set por ahora
v_set = 25; // Ejemplo estático, reemplaza con lectura real
if (v_set >= 20) {
// Actualizar decimales
dec = v_set / 10;
uni = v_set % 10;
// Control del parpadeo del display
if (t % 1000 < 500) {
digitalWrite(dig1, LOW);
digitalWrite(dig2, HIGH);
Display(dec);
} else {
digitalWrite(dig1, HIGH);
digitalWrite(dig2, LOW);
Display(uni);
}
}
t = 0;
}
}
}
void Display(int dato) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
if (dato == 0) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
} else if (dato == 1) {
digitalWrite(B, LOW);
digitalWrite(C, LOW);
} else if (dato == 2) {
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(G, LOW);
} else if (dato == 3) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
} else if (dato == 4) {
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
} else if (dato == 5) {
digitalWrite(A, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
} else if (dato == 6) {
digitalWrite(A, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
} else if (dato == 7) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
} else if (dato == 8) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
} else if (dato == 9) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
}
}