Control de temperatura en un rango de temperaturas

Buenas tardes,

Estoy intentando que una resistencia se encienda o se apague en función de la temperatura que registro con el MAX31855 y un termopar, es decir, que si mi temperatura es mayor que 32ºC (por ejemplo) la resistencia se apague y si es menor que 28ºC (por ejemplo) se encienda para ello he utilizado el programa que ya viene escrito en la biblioteca Arduino (Adafruit MAX31855 library) pero con una pequeña modificación para que no solo me registre las temperaturas sino que también me apague o me encienda la resistencia para ello utilicé dos funciones "If" pero cuando está en HIGH el pin de la resistencia no lo mantiene sino que lo enciende un instante y luego cuando lee la temperatura siguiente lo vuelve a encender otro instante y así sucesivamente ¿cómo puedo hacer para que me mantenga encendida la resistencia hasta que dejde de cumplirse la condición? Os dejo el código que estoy utilizando a continuación.

Muchas gracias de antemano

PD utilizo el Arduino UNO R3.

#include <SPI.h>
#include "Adafruit_MAX31855.h"

const int pin = 9; // definimos el punto de entrada de la resistencia
   // Default connection is using software SPI, but comment and uncomment one of
   // the two examples below to switch between software SPI and hardware SPI:
   // Example creating a thermocouple instance with software SPI on any three
   // digital IO pins.
#define MAXDO   3
#define MAXCS   4
#define MAXCLK  5

   // initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

void setup() {
  pinMode(pin, OUTPUT); // definimos el pin de la resistencia como de salida
  
  Serial.begin(9600); // para iniciar el puerto serie y que los datos se reflejen en el cuadro
  
   while (!Serial) delay(1); // wait for Serial on Leonardo/Zero, etc

  Serial.println("MAX31855 test");
  // wait for MAX chip to stabilize
  delay(1000);
 }

void loop() {
    // basic readout test, just print the current temp
   Serial.print("Internal Temp = ");
   Serial.println(thermocouple.readInternal());

   double c = thermocouple.readCelsius();
   if (isnan(c)) {
     Serial.println("Something wrong with thermocouple!");
   } else {
     Serial.print("C = "); 
     Serial.println(c);
   }
   delay(1000);

   float temperatura = thermocouple.readInternal();
   
   if("temperatura <=28") {digitalWrite(pin, HIGH);}
   if("temperatura>=32"){digitalWrite(pin, LOW);}

Prueba a quitar la comillas " de los if.

  if(temperatura <=28) {digitalWrite(pin, HIGH);}
   if(temperatura>=32) {digitalWrite(pin, LOW);}

Prueba quitando las comillas de tu if, eso hace que el compilador piense que es un texto personalizado y no código, las llaves no son necesarias si solo hace una función, y si usas float, tendrás que comparar con decimal :slight_smile:

if(temperatura <= 28.0) digitalWrite(pin, HIGH);
if(temperatura >= 32.0) digitalWrite(pin, LOW);

Buenas tardes,

Ya funciona, teníais razón, muchas gracias por vuestra ayuda.
!Un saludo!