Ayuda con mi proyecto.

Buenas tardes, me gustaría comentaros un problema que me ocurre, ya que no llevo mucho tiempo y aunque parezca tan simple no me había tocado nunca ese problema y no se me ocurre como solucionarlo. Os cuento:

No sabia que hacer y comence a juntar componentes colocando un lm35 para medir la temperatura y una ldr para medir el porcentaje de luz del ambiente; poniendo que cada 5 segundos me mandase por el monitor serial ambas; vale, hasta ahí todo bien. El problema viene cuando introduzco en el circuito un sensor de inclinacion con un led rojo que indicase si se inclinaba y tal...

el problema es que el sensor funciona solo cada 5 segundos; es decir si lo inclino y hace 2 segundos que habia mandado la señal de la temperatura y ldr, tengo que esperar otros 3 para que se encienda el led, y una vez encendido lo tumbo y tengo que esperar otro 5 para que se apague.

no se si me explico, quiero que por una parte mande temperatura y luminosidad al monitor serial, y por otra parte poder inclinar la protoboard y que la luz se encienda y se apague independientemente de lo otro. Porfavor y Gracias.

no uses delay y en cambio usa millis(). MIra el ejemplo del IDE llamado BlinkWithoutDelay.
Esa es tu solución, hacer todo como para que ocurran las tareas a los tiempos prefijados peroooo que nunca quede detenido por los delay y en cambio pueda ver el inclinómetro en todo momento.

este es mi codigo, agradeceria que me corrigieras todo lo que tu veas, porque nunca me a tocado como ya e dicho usar eso, Muchas gracias por comentar.

int luminosidad = 0; // porcentaje de luminosidad recibida en la ldr.
int pinldr = A0; // Pin de la entrada de la ldr
int valorldr = 0; // valor de 0 a 1023 de la ldr.

int sensortemp = A1; // Pin del sensor del LM35.
float temp; // Variable tipo float del sensor.

const int sensorinclinacion = 8; // entrada del sensor de inclinacion.
int estadoinclinacion = 0; // estado del sensor de inclinacion.
const int led = 7; // pin del led que avisa la inclinacion.

void setup() {
Serial.begin(9600); //inicio de la comunicacion serial.

pinMode (sensorinclinacion, INPUT); // declaro entrada al sensor de inclinacion.
pinMode (led, OUTPUT); // declaro salida al led avisador.
}

void loop() {
estadoinclinacion = digitalRead(sensorinclinacion); // mando leer el pin del sensor de inclinacion y lo almaceno en la variable.

valorldr = analogRead(pinldr); // calculo del valor de la ldr y la luminosidad.
luminosidad = valorldr / 10,23;

temp = analogRead(sensortemp); // calculo de la temperatura.
temp = temp * 0.48828125;

if(estadoinclinacion == LOW) { // si el sensor de inclinacion esta apagado o inclinado el led se enciende
digitalWrite(led, HIGH); }

if(estadoinclinacion == HIGH) { // si el sensor de inclinacion manda señal el led esta apagado
digitalWrite(led, LOW); }

{ Serial.print(luminosidad); // quiero que indique la luminosidad y la temperatura cada 2 segundos,
Serial.println (" Por Ciento de Luz"); // sin que influya en el sensor de inclinacion.

Serial.print("temperatura: ");
Serial.print(temp);
Serial.print(" Grados");
Serial.println();
delay(2000); }

}

Ahh bueno quita el delay(2000) y no te pierdes nada.

ya pero, mi idea era aprender a hacer eso, conseguir mandar la señal al monitor serial cada 2 segundos, sin que influya en el sensor de inclinacion.

He leido el tutorial BlinkWhithoutDelay, pero la verdad es que no lo entiendo demasiado, si me lo podeis explicar aplicado a mi caso, os lo agradeceria mucho.

const byte sensorinclinacion  = 8;                      // entrada del sensor de inclinacion.
const byte led                = 7;                      // pin del led que avisa la inclinacion.
const byte pinldr             = A0;                     // Pin de la entrada de la ldr
const byte sensortemp         = A1;                     // Pin del sensor del LM35.

float luminosidad = 0;                                  // porcentaje de luminosidad recibida en la ldr.
float temp;                                             // Variable tipo float del sensor.

int estadoinclinacion = 0;                              // estado del sensor de inclinacion.
unsigned long tdemoro;

void setup() {
  Serial.begin(9600);                                   //inicio de la comunicacion serial.
  
  pinMode (sensorinclinacion, INPUT);                   // declaro entrada al sensor de inclinacion.
  pinMode (led, OUTPUT);                                // declaro salida al led avisador.
  tdemoro = millis();
}

void loop() {
  estadoinclinacion = digitalRead(sensorinclinacion);     // mando leer el pin del sensor de inclinacion y lo almaceno en la variable.
  
  luminosidad = analogRead(pinldr)/10.23;                 // calculo del valor de la ldr y la luminosidad.
  temp = 0.48828125 *analogRead(sensortemp);                          // calculo de la temperatura.
  
  if(estadoinclinacion == LOW)                            // si el sensor de inclinacion esta apagado o inclinado el led se enciende
      digitalWrite(led, HIGH); 
  else                                                    // si el sensor de inclinacion manda señal el led esta apagado
    digitalWrite(led, LOW); 
  
  if (millis() - tdemoro > 2000UL)  {
    Serial.print(luminosidad);                            // quiero que indique la luminosidad y la temperatura cada 2 segundos, 
    Serial.println (" Por Ciento de Luz");                // sin que influya en el sensor de inclinacion.

    Serial.print("temperatura: ");                        
    Serial.print(temp);
    Serial.print(" Grados");
    Serial.println(); 
    tdemoro = millis();
  }
}

Muchas Gracias.