i want to make delay time for reading sensor without using delay

hello
this is my first project and my first post here
i ask for help
i make project for control temp. and humidity
and i want to make delay time after current_temperature for 15 s to be sure that temperature will be stable

this where i want to make delay time

if ( current_temperature >= firstT_value )

{
digitalWrite(firstT_output_pin, HIGH);
digitalWrite(secondT_output_pin, LOW);

}

else {

digitalWrite(firstT_output_pin, HIGH);
digitalWrite(secondT_output_pin, HIGH);
}

You need to post the complete program.

Have a look at how millis() is used to manage timing without blocking in Several Things at a Time.

And see Using millis() for timing. A beginners guide if you need more explanation.

...R

PS ... Please post your program using the code button </> so it looks like this. See How to use the Forum. It makes it much easier for people to help you

i try this .....but not working too :confused:

if ( current_temperature >= firstT_value )

{
Timer= millis();
if (millis()-Timer >= 5000){
digitalWrite(firstT_output_pin, HIGH);
digitalWrite(secondT_output_pin, LOW);
}
}

else {

digitalWrite(firstT_output_pin, HIGH);
digitalWrite(secondT_output_pin, HIGH);
}

osama010:
i try this .....but not working too :confused:

If you won't take the trouble to read my Replies it seems to me to be a waste of time writing them.

...R

SORRY i read ur Replies but i post this before u send ur replay
any way
this is my full code ... and u know what i cant do :-[

#include <dht.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h> 
#include <EEPROM.h>
#include <EasyButton.h>
LiquidCrystal_I2C LCD(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int min_value = 0;
const int max_value = 100;
byte eeprom_value;
const int firstT_value_up_pin = 10;
const int firstT_value_down_pin = 11;
int firstT_value =  25;
const int eeprom_address_firstT_value = 0;
const int secondT_value_up_pin = 12;
const int secondT_value_down_pin = 13;
int secondT_value =29;
const int eeprom_address_secondT_value = 1;
const int firstH_value_up_pin = 6;
const int firstH_value_down_pin = 7;
int firstH_value =  40;
const int eeprom_address_firstH_value = 2;
const int secondH_value_up_pin = 8;
const int secondH_value_down_pin = 9;
int secondH_value =   50;
const int eeprom_address_secondH_value = 3;
const int firstT_output_pin = A0;
const int secondT_output_pin = A1;
const int firstH_output_pin = A2;
const int secondH_output_pin = A3;
EasyButton button_firstT_up(firstT_value_up_pin);
EasyButton button_firstT_down(firstT_value_down_pin);
EasyButton button_secondT_up(secondT_value_up_pin);
EasyButton button_secondT_down(secondT_value_down_pin);
EasyButton button_firstH_up(firstH_value_up_pin);
EasyButton button_firstH_down(firstH_value_down_pin);
EasyButton button_secondH_up(secondH_value_up_pin);
EasyButton button_secondH_down(secondH_value_down_pin);
#define DHT_PIN 4
dht DHT;

long last_read_from_sensor = 0;
const long sensor_read_delay = 10000;
unsigned long Timer ;


double current_temperature ;
double current_humidity  ;


void setup() {
{
  Serial.begin(9600);
  LCD.begin(16, 2);  // 16 lines by 2 rows
  LCD.clear();
  LCD.backlight();
  LCD.setCursor(5, 0);
  LCD.print("J A C");
  LCD.setCursor(1, 1);
  LCD.print("T & H  CONTROL");
  delay (4000);
  LCD.clear();
  LCD.setCursor(0, 0);
  LCD.print("OSAMA AHMED ");
  LCD.setCursor(5, 1);
  LCD.print("01005100425");
  delay (5000);
}
EasyButton button_firstT_up(firstT_value_up_pin);
EasyButton button_firstT_down(firstT_value_down_pin);
EasyButton button_secondT_up(secondT_value_up_pin);
EasyButton button_secondT_down(secondT_value_down_pin);
EasyButton button_firstH_up(firstH_value_up_pin);
EasyButton button_firstH_down(firstH_value_down_pin);
EasyButton button_secondH_up(secondH_value_up_pin);
EasyButton button_secondH_down(secondH_value_down_pin);
  
  eeprom_value = EEPROM.read(eeprom_address_firstT_value);
  if(eeprom_value != 255)
  {firstT_value = eeprom_value;}
  eeprom_value = EEPROM.read(eeprom_address_secondT_value);
  if(eeprom_value != 255)
  {secondT_value = eeprom_value;}
  eeprom_value = EEPROM.read(eeprom_address_firstH_value);
  if(eeprom_value != 255)
  {firstH_value = eeprom_value;}
  eeprom_value = EEPROM.read(eeprom_address_secondH_value);
  if(eeprom_value != 255)
  {secondH_value = eeprom_value;}
  pinMode(firstT_output_pin, OUTPUT);
  digitalWrite(firstT_output_pin, HIGH);
  pinMode(secondT_output_pin, OUTPUT);
  digitalWrite(secondT_output_pin, HIGH);
  pinMode(firstH_output_pin, OUTPUT);
  digitalWrite(firstH_output_pin, HIGH);
  pinMode(secondH_output_pin, OUTPUT);
  digitalWrite(secondH_output_pin, HIGH);
  
}


  
void loop() {

  button_firstT_up.update();
  button_firstT_down.update();
  button_secondT_up.update();
  button_secondT_down.update();
  button_firstH_up.update();
  button_firstH_down.update();
  button_secondH_up.update();
  button_secondH_down.update();

if(button_firstT_up.IsPushed() && firstT_value < max_value && firstT_value < (secondT_value - 1))
{firstT_value++;      
    EEPROM.write(eeprom_address_firstT_value, firstT_value);}
    if(button_firstT_down.IsPushed() && firstT_value > min_value)
  {firstT_value--;   
   EEPROM.write(eeprom_address_firstT_value, firstT_value);}
    
if(button_firstH_up.IsPushed() && firstH_value < max_value && firstH_value < (secondH_value - 1))
{firstH_value++;      
    EEPROM.write(eeprom_address_firstH_value, firstH_value);}
    if(button_firstH_down.IsPushed() && firstH_value > min_value)
  {firstH_value--;   
   EEPROM.write(eeprom_address_firstH_value, firstH_value);}
if(button_secondT_up.IsPushed() == HIGH && secondT_value < max_value)
  {secondT_value++;
   EEPROM.write(eeprom_address_secondT_value, secondT_value);}
if(button_secondT_down.IsPushed() && secondT_value > min_value && firstT_value < (secondT_value - 1))
  {secondT_value--;
   EEPROM.write(eeprom_address_secondT_value, secondT_value);}
if(button_secondH_up.IsPushed() == HIGH && secondH_value < max_value)
  {secondH_value++;
   EEPROM.write(eeprom_address_secondH_value, secondH_value);}
if(button_secondH_down.IsPushed() && secondH_value > min_value && firstH_value < (secondH_value - 1))
  {secondH_value--;
   EEPROM.write(eeprom_address_secondH_value, secondH_value);}

   {int chk = DHT.read22(DHT_PIN);
  
switch (chk)
      {
      case DHTLIB_OK:  
        Serial.print(F("OK, "));
      
        current_temperature = DHT.temperature;
        current_humidity = DHT.humidity;

        Serial.print(F("current temperature: "));
        Serial.println(current_temperature);
        
        Serial.print(F("Current humidity: "));
        Serial.println(current_humidity);

        
  Serial.print(current_temperature); Serial.print(" *C, ");
  
  Serial.print(current_humidity); Serial.println(" %");

  LCD.clear();

  // (note: line 1 is the second row, since counting begins with 0):
  LCD.setCursor(0, 0);
  LCD.print(current_temperature);
  LCD.setCursor(3, 0);
  LCD.setCursor(6, 0);
  LCD.print("T");

  LCD.setCursor(0, 1);
  LCD.print(current_humidity+28);
  LCD.setCursor(6, 1);
  LCD.print("H");
  // DHT11 sampling rate is 1HZ.



  LCD.setCursor(11, 0);
  LCD.print(firstT_value);
  LCD.setCursor(13, 0);
  LCD.print("-");
  LCD.setCursor(14, 0);
  LCD.print(secondT_value);
  LCD.setCursor(8, 0);
  LCD.print((char)223);
  LCD.setCursor(9, 0);
  LCD.print("C");

  LCD.setCursor(11, 1);
  LCD.print(firstH_value);
  LCD.setCursor(13, 1);
  LCD.print("-");
  LCD.setCursor(14, 1);
  LCD.print(secondH_value);
  LCD.setCursor(9, 1);
  LCD.print("%");



if ( current_temperature >= secondT_value )
   
   {
    
    digitalWrite(firstT_output_pin, LOW);
    digitalWrite(secondT_output_pin, LOW);
    
   }
   
  else if ( current_temperature  >= firstT_value )
      
     {
      Timer= millis();
      if (millis()-Timer >= 5000UL){
      digitalWrite(firstT_output_pin, HIGH);
      digitalWrite(secondT_output_pin, LOW);
      }
     }

  else {
      
      digitalWrite(firstT_output_pin, HIGH);
      digitalWrite(secondT_output_pin, HIGH);
       }
       

    if ( current_humidity+28 >= secondH_value ) 
    {
          
    digitalWrite(firstH_output_pin, LOW);
    digitalWrite(secondH_output_pin, LOW);
    
    }
    
    
 
  else  if ( current_humidity+28 >= firstH_value)
     
      {
      
      digitalWrite(firstH_output_pin, HIGH);
      digitalWrite(secondH_output_pin, LOW);
       
      }
    
  
    else {
      
      digitalWrite(firstH_output_pin, HIGH);
      digitalWrite(secondH_output_pin, HIGH);
          }
    

   break;
      case DHTLIB_ERROR_CHECKSUM: 
        Serial.println(F("Checksum error.")); 
        break;
      case DHTLIB_ERROR_TIMEOUT: 
        Serial.println(F("Time out error.")); 
        break;
      default: 
        Serial.println(F("Unknown error.")); 
        break;

        last_read_from_sensor = millis();
  }  }  }

Please use the Auto Format tool to indent your program consistently so it is easier to read. You should never have more than one } on any line. The compiler won't mind, but it makes the code very hard to read.

Also, please tell us the line number where the piece of code you want us to look at is located.

...R