Controlador de temperatura umidade e display LCD

Boa noite queridos amigos, sou novo aqui no forum e faz pouco tempo que estou aprendendo o Arduino, estou tentando fazer um controlador de umidade e temperatura com arduino, as funções iniciais estão ok, meu problema é fazer acionar a portas do arduino, já fiz algumas idéias lidas aqui no forum, mas sem sucesso, estou tentando simular no tinkercad, não sei se é esse o problema mas recorro a ajuda de vcs, desde agradeço.
Na real será utilizado um arduino UNO, um sensor DTH11, um módulo para 4 reles.

Obs: neste código está com if, else e switch, case, só com o if else, não funcionou também, o que eu fiz de errado( isso é trabalho de escola)

/*
 * Projeto controle de umidade e temperatura com arduino
 * 
 * Verificar temperatura e umidade do ambiente e mostrar na tela do LCD
 *
 * ligar um ventilador se por acaso temperatura alta,
 * ligar um umidificador se por acaso umidade do ar baixo,
 * ligar um sistema de alarme sonoro e visual caso alguns dos eventos acima ocorrer
 * 
 */
                                                       // Biblioteca LCD
#include <LiquidCrystal.h>                             


LiquidCrystal LCD(7,6,5,4,3,2);                        // Inicializa a biblioteca LCD


int SensorTempPino = A1;                               // Define o pino analogico A0 como entrada do Sensor de Temperatura

int max_Temp = 23, min_Temp = 13;                      //Declarando o maximo e o minimo da temperatura
int max_Umid = 40, min_Umid = 30;                      //Declarando o maximo e o minimo da umidade
int Vent1 = 13;                                        //Declarando o pino 13 a ser usado no arduino para o ventilador
int Umid1 = 12;                                        //Declarando o pino 12 a ser usado no arduino para o umidificador
int Alarm1 = 10;                                       //Declarando o pino 10 a ser usado no arduino para o alarme alta temp
int Alarm2 = 9;                                        //Declarando o pino 9 a ser usado no arduino para o alarme baixa umidade
int ValorGer1;


void setup()
{
    
  	pinMode(Vent1,  OUTPUT);
    pinMode(Umid1,  OUTPUT);
    pinMode(Alarm1, OUTPUT);
    pinMode(Alarm2, OUTPUT);
  	

	LCD.begin(16,2);// Inicia LCD e define a quantidade de colunas e linhas do LCD
	
    LCD.print("Temperatura:   C");// Imprime a mensagem de temperatura no LCD
	
	LCD.setCursor(0,1);// Muda o cursor para a primeira coluna e segunda linha do LCD
	
	LCD.print("  Umidade  :   %");// Imprime a mensagem da umidade no LCD

}

void loop() 
{
  
    int ValorGer1 = 0;
	// Faz a leitura da tensao no Sensor de Temperatura
	int SensorTempTensao = analogRead(SensorTempPino);

  	// Converte a tensao lida
	float Tensao = SensorTempTensao*5;
	Tensao /= 1024;

  	// Converte a tensao lida em Graus Celsius
	int tempC = (Tensao-0.5)*100;

  	// Converte a temperatura em Graus Celsius para Fahrenheit
	int umid = (tempC*9/5);

  	// Muda o cursor para a primeira coluna e segunda linha do LCD
  	LCD.setCursor(13,0);

  	// Imprime a temperatura em Graus Celsius
	LCD.print(tempC);

  	// Muda o cursor para a decima coluna e segunda linha do LCD
	LCD.setCursor(13,2);

  	// Imprime a temperatura em Graus Fahrenheit
  	LCD.print(umid);
  
//******************************************************************************************************************************
  //Iniciando a função de acionamentos dos alarmes e controladores	

   if ((tempC <= max_Temp && tempC >= min_Temp) || (umid <= max_Umid && umid >= min_Umid))     
      //Temperatura e Umidade normal     
      {
     	int ValorGer1 = 1;
      }

  //******************************************************************************************************************************      
 
  else 
  
    if ((tempC >= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid)) 
      //Temperatura acima do setup, Umidade Acima do setup     
      {
       	  int ValorGer1 = 2;
      }
   
//******************************************************************************************************************************    
      else
      
        if ((tempC <= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid))  
      //Temperatura normal, Umidade Acima do setup     
     	 {        
        	 int ValorGer1 = 3;
      	 }
      
//******************************************************************************************************************************     
      else
      
        if ((tempC <= min_Temp && tempC <= max_Temp) || (umid <= min_Umid && umid <= max_Umid))  
      //Temperatura abaixo do setup, Umidade abaixo do setup     
    	  {
         	digitalRead(ValorGer1 = 4);
       	  }
      
//******************************************************************************************************************************
      else
      
        if ((tempC <= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid <= min_Umid))  
      //Temperatura normal, Umidade abaixo do setup      
     	 {
          	digitalRead(ValorGer1 = 5);
     	 }
      
//******************************************************************************************************************************     
       else
       
         if ((tempC <= max_Temp && tempC <= min_Temp || umid <= max_Umid && umid >= min_Umid))  
       //Temperatura abaixo do setup, Umidade normal       
     	  {
          	digitalRead(ValorGer1 = 6);
   	      }
  //******************************************************************************************************************************     
       else
       
         if ((tempC >= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid >= min_Umid))  
       //Temperatura abaixo do setup, Umidade normal       
     	  {
          	digitalRead(ValorGer1 = 7);
     	  }

   switch (ValorGer1) {
     case '1':
      	  
     	  digitalWrite (Vent1, LOW);                       //Ventilador ambiente desligado
          digitalWrite (Umid1, LOW);                       //Umidificador ambiente desligado
          digitalWrite (Alarm1, LOW);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, LOW);                      //Alarme umidade baixa  desligado
         
      break;
     case '2':
         digitalWrite (Vent1, HIGH);                       //Ventilador ambiente ligado
         digitalWrite (Umid1, LOW);                        //Umidificador ambiente desligado
         digitalWrite (Alarm1, HIGH);                      //Alarme temperatura alta ligado
         digitalWrite (Alarm2, LOW);                       //Alarme umidade baixa  desligado
         
      break;
     case '3':
          digitalWrite (Vent1, HIGH);                      //Ventilador ambiente ligado
          digitalWrite (Umid1, LOW);                       //Umidificador ambiente desligado
          digitalWrite (Alarm1, LOW);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, LOW);                      //Alarme umidade baixa  desligado
         
      break;
     case '4':
          digitalWrite (Vent1, LOW);                       //Ventilador ambiente desligado
          digitalWrite (Umid1, HIGH);                      //Umidificador ambiente ligado
          digitalWrite (Alarm1, LOW);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, HIGH);                     //Alarme umidade baixa  ligado
         
      break;
     case '5':
          digitalWrite (Vent1, LOW);                       //Ventilador ambiente desligado
          digitalWrite (Umid1, HIGH);                      //Umidificador ambiente ligado
          digitalWrite (Alarm1, LOW);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, HIGH);                     //Alarme umidade baixa  ligado
         
      break;
     case '6':
          digitalWrite (Vent1, LOW);                       //Ventilador ambiente desligado
          digitalWrite (Umid1, LOW);                       //Umidificador ambiente desligado
          digitalWrite (Alarm1, LOW);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, LOW);                      //Alarme umidade baixa  desligado
         
      break;
     case '7':
          digitalWrite (Vent1, HIGH);                       //Ventilador ambiente desligado
          digitalWrite (Umid1, LOW);                       //Umidificador ambiente desligado
          digitalWrite (Alarm1, HIGH);                      //Alarme temperatura alta desligado
          digitalWrite (Alarm2, LOW);                      //Alarme umidade baixa  desligado
         
      break;

     }
   
       
  		
}

Podes fazer calculos para escalar as entradas analogicas duma vez só. Isso regra geral resulta em menos probabilidade de erro.
Por exemplo:

// Faz a leitura da tensao no Sensor de Temperatura
	int SensorTempTensao = analogRead(SensorTempPino);

  	// Converte a tensao lida
	float Tensao = (float)(SensorTempTensao*5)/1025; //aqui até podias multiplicar logo pelo resultado de 5/1024.

Depois tens um erro neste pedaço de código:

 if ((tempC <= max_Temp && tempC >= min_Temp) || (umid <= max_Umid && umid >= min_Umid))     
      //Temperatura e Umidade normal     
      {
     	int ValorGer1 = 1;
      }

A variável ValorGer1 apenas existe dentro do if. Como crias sempre uma variável dentro de cada if, quando chega a altura de escrever o valor da mesma, isso nunca funciona.
O que tens de fazer é:

inv ValorGer1 = 0; //metes isto fora de qualquer função. 

if ((tempC <= max_Temp && tempC >= min_Temp) || (umid <= max_Umid && umid >= min_Umid)){
    ValorGer1 = 1;
} else{
    ValorGer1 = 2;
}

Assim a variável existe e mantém o valor correcto sempre que a chamas.
O código que meti é apenas uma exemplo, tu é que decides como o fazer, mas dá para mostrar que não deves criar uma variável nova sempre que precisas de a usar.