funcion millis() basica

Hola chicos,

acabo de aterrizar en esto de arduino y estoy haciendo mis primeras pruebas de codigo. Ni idea tengo del tema pero leyendo articulos y buscando me tire a la piscina...

llevo atascado con la funcion millis para controlar un rele días, se que es una cosa muy basica pero no se donde fallo, a ver si me podeis echar una mano:

tengo un sensor Pir el cual cuando detecta movimiento da señal durante 3 segundos y quiero que el rele se mantenga encendido, por ejemplo 9 segundos y no hay manera. Siempre se apaga en cuanto la señal es LOW. Os paso el codigo:

unsigned long TIEMPO1 = 0;
unsigned long TIEMPO2 = 0;
unsigned long ESPERA_ACTIVA2 = 900000;

const int LED= 2;
const int PIR= 3;
int SENSOR= 0;


void setup()
{
 pinMode(LED, OUTPUT);
 pinMode(PIR, INPUT);
 Serial.begin(9600);
 TIEMPO1 = millis();
 
}

void loop()
{ 
 TIEMPO2 = millis();
 SENSOR= digitalRead(PIR);
 if (SENSOR == HIGH)
 {
     digitalWrite (LED, HIGH);
 }
 if (TIEMPO2 >= (TIEMPO1 + 50000));
{  
  TIEMPO1 = millis();
  digitalWrite(LED, LOW);
  
  
}
 

 Serial.println (SENSOR);
}

tambien es mi primer post aqui a si que no se si me explique bien... gracias de antemano!!

 unsigned long TIEMPO1 = 0;
unsigned long TIEMPO2 = 0;
unsigned long ESPERA_ACTIVA2 = 9000;

const int LED= 2;
const int PIR= 3;
int SENSOR= 0;


void setup()
{
 pinMode(LED, OUTPUT);
 pinMode(PIR, INPUT);
 Serial.begin(9600);
 TIEMPO1 = millis();
 
}

void loop()
{ 
 TIEMPO2 = millis();
 SENSOR= digitalRead(PIR);
 if (SENSOR == HIGH)
 {
     digitalWrite (LED, HIGH);
     TIEMPO1=millis();
      Serial.println (SENSOR);
 }
 if (millis()-TIEMPO2> ESPERA_ACTIVA2 )
{  
  
  digitalWrite(LED, LOW); 

  Serial.println (SENSOR);

}
 }

Prueba si te funciona este. No lo he probado.
Otras mejoras:
Variables en minúsculas

Otra versión

unsigned long tiempo1 = 0;
unsigned long Espera_activa = 900000;

const int Led = 2;
const int Pir = 3;
bool flag = false;
bool Sensor, SensorAnt = false;

void setup() {
  pinMode(Led, OUTPUT);
  pinMode(Pir, INPUT);
  Serial.begin(9600);
}

void loop() {
  Sensor  = digitalRead(Pir);
  Serial.println(Sensor?"PIR  ON":"PIR OFF");

  if (Sensor == HIGH && SensorAnt == LOW)   {
      digitalWrite (Led, HIGH);
      flag = true;
      tiempo1 = millis();
  }

  if (flag) {
      if (millis() >= (tiempo1 + Espera_activa)){          
          digitalWrite(Led, LOW);
          flag = false;
      }
  }
  SensorAnt = Sensor;
}

surbyte tu version si que va :smiling_imp: :smiling_imp: pero me puedes explicar por favor un par de cosas??

la variable= bool Sensor, SensorAnt = false; para que es?

y flag??

a ver si voy pillando algo del tema... muchas gracias por la ayuda