Controllare una temperatura ogni 10 secondi e far ruotare un servo ogni ora

Salve a tutti;
io dovrei controllare la temperatura di un box modulandola ogni 10 secondi, mentre dovrei muovere ogni ora un servo che mi apre una presa d'aria. Il programma che ho pensato di creare è questo, ma essendo tutto in loop, il controllo della temperatura viene effettuato la prima volta, poi il ciclo va avanti e aspetta il delay di un ora del motore prima di effettuare il secondo controllo, dovrei praticamente dividere in 2 blocchi indipendenti le 2 operazioni. Volevo capire quali funzioni dovrei usare.
Ecco il programma:

#include <Servo.h>

Servo myservo; //

const int gradi = 38; // gradi da impostare
const int PINout = 13; // pin di uscita
const int PINin = 0; // pin analogico usato
int pos = 0; // Variabile posizione del servo motore
int pos2 = 180; // Variabile seconda posizione servo motore
int led1 = 13; // Led rosso posizione 0
int led2 = 12; // Led verde posizione 180
int rele = 3; // Contatto relè

void setup() {

Serial.begin (9600);
myservo.attach(9); // attivi il pin digitale 9 collegato al servo motore
pinMode (led1, OUTPUT); //led rosso
pinMode (led2, OUTPUT); //led verde
pinMode (rele, OUTPUT); //OFF RELE
pinMode (PINout, OUTPUT); //resistenza

}

unsigned long STARTINGTIME = 20000; //GESTIONE TIMER
const unsigned long TIMEOUT = 0; //GESTIONE TIMEOUT (2000Ms = 2 Sec)

void loop()

//controllo temperatura
{
int value = analogRead(PINin);
Serial.print(value);
Serial.print(">");
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10;
Serial.print (celsius);
Serial.print ("degrees Celsius, ");
if (celsius < gradi)
{

digitalWrite(PINout, HIGH);
Serial.println("Resistenza spenta");
delay(10000);
}

else (celsius > gradi);
{
digitalWrite(PINout, LOW);
Serial.println("Resistenza accesa");
delay(10000);
}

//controllo servomotore

{
for (pos = 0; pos <= 180; pos += 1) // Servo passa da 0 a 180 incrementando di 1 step ogni valore scritto nella riga delay
{

myservo.write(pos); // il servo torna nella posizione di origine scritta sulla variabile "pos"

delay(5); // velocitàtra uno passo e l'altro
}

if (myservo.attach(9) == 0); //Se il servo motore è in posizione 0

{

digitalWrite(led1, HIGH); // Luce del led rosso si accende
digitalWrite(led2, LOW); // Luce del led verde si spegne
delay(10000); // Tempo di fermo tra una rotazione e l'altra
}
for (pos = 180 ; pos >= 0; pos -= 1) // Servo passa da 180 a 0 incrementando di 1 step ogni valore scritto nella riga delay
myservo.write(pos2); // il servo torna nella posizione di origine scritta sulla variabile "pos2"
delay(5); // velocitàtra uno passo e l'altro

if (myservo.attach(9) == 180); // Se il servo motore è in posizione 180
{
digitalWrite (led2, HIGH); // Luce del led rosso si spegne
digitalWrite(led1, LOW); // luce del led verde si accende
digitalWrite (rele, LOW); // La bobina del relè viene disseccitata, spegnendo il motore
}
{
delay(10000); // Tempo di fermo tra una rotazione e la prossima
}
digitalWrite (rele, HIGH); // Riattivo la bobina del relè e riporto la corrente al motore

myservo.detach(); // disattiva il servo motore

}
}

Buongiorno,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie.

Guglielmo

DOPO CHE AVRAI FATTO QUANTO CHIESTO DA GUGLIELMO NEL POST PRECEDENTE credo che il problema sia l'uso della delay() per i vari timer. Tale funzione é ACCETTATA solo se il programma non deve fare NULLA on quell'intervallo, infatti la delay() é una funzione BLOCCANTE, che blocca lo svolgimento del programma per tutta la sua durata. L'alternativa all'uso della delay() é la costruzione di timer con millis(). Se vuoi sapere cosa é millis() basta guardare nei vari post, che sono disseminati di messaggi in cui Guglielmo lo spiega.
É, poi, più facile, o almeno credo, controllare il servo impostando una macchina a stati, e non con una sola scrittura di loop().