El módulo de relé funciona al revés

Saludos al foro:

Creo que estoy posteando donde corresponde, De no ser así, pido disculpas por adelantado.

Estoy haciendo un circuito para controlar la temperatura de la electrónica de una impresora 3D. Me llevé un susto cuando una mañana la encontré calcinada, habiendo daños en el techo del garaje por llamas :disappointed_relieved:

Una vez reparada, decidí que eso no podía volver a pasar, y comencé a estudiar algo de arduino y me hice con una placa. Este es mi primer código.

Ahora mismo está terminada la prueba en placa de prototipos, pero tengo un problema (creo).
Funciona perfectamente, sólo que para que se mantenga encendido el módulo de relés mientras no se llegue al umbral máximo, tengo que poner esa parte del código así:

if(tempCmax<35) // Si la temperatura máxima es menor a 35
    {
      digitalWrite(rele , LOW); // indico apagar el relé, pero se mantiene encendido
    }
     else {
       digitalWrite(rele, HIGH); // si es superior, indico encenderlo, pero se apaga
    }

Este es el código completo:

// Script para leer temperatura utilizando un LM35
// Mediante el contacto normalmente abierto del relé, 
// se enciende el circuito de alta potencia siempre que la
// temperatura máxima no alcance el umbral establecido.

// Declaracion de variables
float tempC;
float tempCmax;
int tempPin = 0; // Definimos la entrada en pin A0
#define ledV 5 // Defino el led verde en el pin A5
#define ledA 6 // Defino el led amarillo en el pin A6
#define ledR 7 // Defino el led rojo en el pin A7
#define rele 8 // Defino el relé en el pin A8
void setup()
{
    // Abre puerto serial y lo configura a 9600 bps
    Serial.begin(9600);
    pinMode(5 , OUTPUT); //defino pin5 como salida
    pinMode(6 , OUTPUT);  // defino pin6 como salida
    pinMode(7 , OUTPUT); //defino pin7 como salida
    pinMode(8 , OUTPUT); //defino pin( como salida
}
void loop()
{
    // Lee el valor desde el sensor
    tempC = analogRead(tempPin); 

    // Convierte el valor a temperatura
    tempC = (5.0 * tempC * 100.0)/1024.0; 
    // Almacena la temperatura máxima
  if(tempC>tempCmax)
  { 
    tempCmax=tempC;
    }
// inicio los leds amarillo y rojo
    digitalWrite(ledA , LOW);
    digitalWrite(ledR , LOW);

    // Envia el dato al puerto serial
    Serial.print(tempC);
    Serial.print(" grados Celsius\n");
    Serial.print (tempCmax);
    Serial.print (" temperatura máxima alcanzada\n");
    digitalWrite(ledV , HIGH); // Enciendo el led verde
    if(tempC>35) // Si la temperatura es superior a 35 
    {
      digitalWrite(ledA , HIGH); // Enciendo el led amarillo
    }
    if(tempC>45) // Si la temperatura es superior a 45
    {
      digitalWrite(ledR , HIGH); // Enciendo el led rojo
    }
    if(tempCmax<55) // Si la temperatura máxima es menor a 55. Temperatura máxima permitida
    {
      digitalWrite(rele , LOW); // apago el relé
    }
     else {
       digitalWrite(rele, HIGH); //
    }
       // Espera cinco segundo para repetir el loop
    delay(5000);
    
}

No sé que tengo mal para que esté funcionando al revés. Podría dejarlo así, pero realmente quiero saber que pasa.
Estoy usando un Arduino Uno con el módulo de 2 relés, que por cierto, he buscado información para saber la función del jumper que tiene, pero no la encuentro.

Agradezco por adelantado cualquier ayuda.

Los reles funcionan con lógica inversa si se conectan del modo que habitualmente todo el mundo usa.
Entonces un LOW enciende y un HIGH apaga.
No hay nada mal.

Como ya te han comentado, simplemente es que trabajan así, y tan sólo deberás cambiar el HIGH por el LOW en cada caso, y con los leds si quieres usar un pin comun con el relé, ya que se activará ahora con LOW deberas conectarlo a positivo directo y que sea la patilla masa del mismo la que le haga trabajar.

Genial.

Hace un momento encontré el datasheet de otro módulo y ponía eso, pero al no ser el mismo no estaba seguro.
Ahora sí.

Muchas gracias por aclarármelo.

Para finalmente aclarar. no es que trabajen al reves. Esa conexión hace que para que funcionen debes usar lógica inversa.
Para usar logica directa o sea un HIGH enciende el RELE y un LOW lo apaga, debes conectarlo de otro modo.