Ajuda nesse codigo simples

Ola galera, alguem pode me ajudar nesse projetinho que que ta dando problema:

O problema esta que cada vez que roda o sensor nao espera entrar no if ele ja sai contando todo vez que eu rodo, ai quando eu passo a mao ele ja ta em 45 segundos, e o que eu queria é que ele so começasse a contar quando eu colocasse a mao em cima do sensor de luminosidade(ldr), se alguem puder ajudar eu agradeço

#define ldr A0
#define led 7

long temp = 0;
int valor;

void setup() {
  //Put your setup code here, to run once:
  pinMode(led, OUTPUT);
  Serial.begin(9600);
   
}

void loop() {
  //Put your main code here, to run repeatedly:
  
valor = analogRead(ldr);
if(valor >= 900){
Serial.print(temp/1000);
Serial.println( "segundos");
delay(1000);
temp = millis();
}

}
[\code]

Vais ter de explicar melhor o que pretendes fazer.

Olá,

Veja bem, a função millis() é um contador de tempo que está sendo atualizado constantemente, como um relógio de parede, ele não para de contar.

Se você quer fazer uma contagem a partir do momento que ativar o sensor, você precisa definir quando o sensor foi ativado, é como monitorar um botão, você pode usar uma variável para salvar o ultimo estado e comparar no próximo ciclo, se a variável já estava setada, significa que o sensor já foi ativado em outro momento.

Depois de você conseguir implementar esse momento que o sensor começar a ser atuado, então você poderá usar uma variável que registre o valor do millis(). Para saber quanto tempo faz que o sensor está atuado, você precisaria fazer a diferença, entre a variável com o valor salvo e o valor atual do millis():

time = millis() - millis_old
unsigned long millis_old; // tipo de variável compatível com o valor de millis()
unsigned long time;