Problemas con código para una tarjeta de fabricador de hielo

Los comentarios que hago simplemente resaltan fallos de código nada mas.

  1. Comprobación del termistor no esta hecha.

  2. pinMode(A0, INPUT); //Termistor no hace falta de ningún modo ponerlo como entrada digital y luego usarlo como entrada analógica.

  3. analogRead(ThermistorPin); solo no sirve para nada.

  4. Tf no lo usas entonces para que lo calculas? // Copiado y pegado demostrado.

  5. Tanto delay() lleva el programa a un fracaso inmediato, perdida de situaciones a verificar/controlar
    Jamas en un sistema de control puedes y/o debes usar delay(). Reemplazo millis()
    Ve a Documentcacion => Indice de temas tutoriales => millis()

   tone(11, 554, 300); // play tone 61 (C#5 = 554 Hz)
    delay(200); // Wait for 200 millisecond(s)
    noTone(11);
    delay(200); // Wait for 200 millisecond(s)
    tone(11, 523, 300); // play tone 60 (C5 = 523 Hz)
    delay(200); // Wait for 200 millisecond(s)
    noTone(11);
    delay(200); // Wait for 200 millisecond(s)
    tone(11, 523, 300); // play tone 60 (C5 = 523 Hz)
    delay(200); // Wait for 200 millisecond(s)
    noTone(11);
    delay(1000); // Wait for 1000 millisecond(s)

Esto son muchos milisegundos de perdida de tiempo 2 segundos exactamente.

luego hay otras cosas como estas

delay(10000); // Wait for 10000 millisecond(s)

y para empeorarla tienes ciclos cerrados como este

while (Tc == 1 && Tc < 12) {
          if (Tc == 1 && Tc < 12) {
            digitalWrite(13, LOW);
            digitalWrite(12, HIGH);
            Serial.println("Temperatura =");
            Serial.print(Tc);
          }
        }

en los que dejas de prestar atención a todo lo demás hasta alcanzar el rango de temperatura.

Se comprende la idea pero mal realizado.

Va enfoque nuevo

Edito: Consulta como es la conexión del NTC y la R1. Cual esta conectada a GND?