#include <max6675.h>
const int pinCLK = 6;
const int pinCS = 7;
const int pinMISO = 8;
MAX6675 Modulo(pinCLK,pinCS,pinMISO);
const uint8_t pinMosfet = 35;
const bool CERRADO = HIGH;
const bool ABIERTO = LOW;
const uint8_t BYTES_AL_RECIBIR_UN_CARACTER = 2;
float Temperatura;
char Comando;
unsigned int TiempoActual;
unsigned int TiempoAnterior;
void setup() {
Serial.begin(115200);
//Pin
pinMode(pinMosfet,OUTPUT);
//Inicialización
digitalWrite(pinMosfet,ABIERTO);
Serial.println("Ingrese un 'C' o 'c' para cerrar el circuito y 'A' o 'a' para abrirlo");
TiempoAnterior = millis();
}
void loop() {
TiempoActual = millis();
if(TiempoActual - TiempoAnterior >= 1000){
TiempoAnterior = TiempoActual;
Temperatura = Modulo.readCelsius();
Serial.print("Temperatura: ");
Serial.println(Temperatura,2);
}
if(Serial.available()>0){ //Hay un comando por leer. Siempre se considera 1 caracter más que los enviados por el salto de línea
if(Serial.available() == BYTES_AL_RECIBIR_UN_CARACTER){
Comando = Serial.read(); //Se lee un byte, un caracter
if(Comando == 'C' || Comando == 'c'){
Serial.println("Cerrando el circuito");
digitalWrite(pinMosfet,CERRADO);
}else if(Comando == 'A' || Comando == 'a'){
Serial.println("Abriendo el circuito");
digitalWrite(pinMosfet,ABIERTO);
}else{
Serial.println("Comando inválido");
}
LimpiarBuffer();
}else{
Serial.println("Comando inválido");
LimpiarBuffer();
}
}
delay(5);
}
void LimpiarBuffer(){
char Caracter;
while(Serial.available()>0){ //Hay más caracteres para leer
Caracter = Serial.read();
}
}