Sensor de temperatura y motor 28byj

Hola, mi nombre es Dardo, soy bastante novato en arduino estoy en mís primeros pasos, eh hecho pequeños proyectos con compilaciones y armadas, ahora arme un proyecto con un sensor DHT22 y un motor PaP 28BYJ-48 y junte 2 skecht (uno de cada uno de los perifericos), el cuál pude hacer funcionar.

Ahora me encuentro con el problema ó mi limitación en conocimiento de programación:

tengo 2 delay diferentes, y al ejecutarse el voip loop ejecuta siempre el ultimo delay y no los 2.

agrego el código a ver que estoy haciendo mal.

Perdón que no dije que utilizo un Arduino Nano.

#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 8, 9, 10 , 11, 12); 
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT22


DHT dht(DHTPIN, DHTTYPE);


//Motor Paso a Paso 

//definicion de pins
const int motorPin1 = 3;    // 28BYJ48 In1
const int motorPin2 = 4;    // 28BYJ48 In2
const int motorPin3 = 5;    // 28BYJ48 In3
const int motorPin4 = 6;    // 28BYJ48 In4
                   
//definicion variables
int motorSpeed = 1200;   //variable para fijar la velocidad
int stepCounter = 0;     // contador para los pasos
int stepsPerRev = 1580;  // 527 pasos para un 1/4 de vuelta
 
//tablas con la secuencia de encendido (descomentar la que necesiteis)
//secuencia 1-fase
//const int numSteps = 4;
//const int stepsLookup[4] = { B1000, B0100, B0010, B0001 };
 
//secuencia 2-fases
//const int numSteps = 4;
//const int stepsLookup[4] = { B1001, B1100, B0110, B0011 };
 
//secuencia media fase
const int numSteps = 8;
const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };
 
 
void setup() 

//Declarar pines como salida motor paso a paso
{
  {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  
 
  // Sensor Temperatura DHT22
  Serial.begin(9600);
  Serial.println("Prueba DHT22"); //Iniciamos la comunicacion Monitor Serial y editamos un texto descriptivo
  dht.begin(); //Iniciamos el sensor
   }
}
void loop()
{
   
  float h = dht.readHumidity();
  float t = dht.readTemperature();  //Establecemos dos variables, una para la temperatura en ºC y otra para la humedad relativa en %

  if (isnan(h) || isnan(t)) {
    Serial.println("Error al Leer Sensor DHT¡"); //Con la funcion isnan controlamos que el valor recibido del sensor sea un número, sino dara error
    return;
    //if (digitalRead(2)==HIGH)
  }
  {
  Serial.print("Humedad: ");   //Mostramos la información obtenida (temperatura y humedad) en el Monitor Serial
  Serial.print(h);             //El \t es equivalente al tabulador (separa los datos)
  Serial.print(" %\t");        //El Serial.prinln nos cambia de linea en la siguiente lectura recibida
  Serial.print("Temperatura: "); 
  Serial.print(t);
  Serial.println(" *C ");

  lcd.begin(16, 2);  //Indicamos el LCD que usamos: 16 caracteres y 2 lineas
  lcd.setCursor(0,0); //Situamos el cursor en la posicion 0 de la primera linea
  lcd.write("Temp.: "); 
  lcd.setCursor(9,0); 
  lcd.print(t);
  lcd.setCursor(14,0); 
  lcd.write((char)223); //Editamos el simbolo de los grados º
  lcd.setCursor(15,0); 
  lcd.write("C");
  lcd.setCursor(0,1); 
  lcd.write("Humedad: "); 
  lcd.setCursor(9,1); 
  lcd.print(h);
  lcd.setCursor(14,1);
  lcd.write("%");

  delay(2000); //Establecemos un retraso porque el DHT22 solo realiza una lectura cada 2 segundos
  }

//PaP

  for (int i = 0; i < stepsPerRev * 0; i++)
  {
    clockwise();
    delayMicroseconds(motorSpeed);
  }
  for (int i = 0; i < stepsPerRev * 2; i++)
  {
    anticlockwise();
    delayMicroseconds(motorSpeed);
  }
  delay(2000); // 7190000 equivale a 2 horas
}
 
void clockwise()
{
  stepCounter++;
  if (stepCounter >= numSteps) stepCounter = 0;
  setOutput(stepCounter);
}
 
void anticlockwise()
{
  stepCounter--;
  if (stepCounter < 0) stepCounter = numSteps - 1;
  setOutput(stepCounter);
}
 
void setOutput(int step)
{
  digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
  digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
  digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
  digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));

}

has leido el foro, al menos un poco?
Siempre decimos en cada hilo lo mismo que te diremos a ti.
Si usas delay no esperes que tu programa funcione bien y menos con un motor esperando instrucciones.

Debes usar millis() asi que mira el ejemplo de tu IDE BlinkWithoutDelay.ino.

He quitado los delays

#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 8, 9, 10 , 11, 12); 
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT22


DHT dht(DHTPIN, DHTTYPE);


//Motor Paso a Paso 

//definicion de pins
const int motorPin1 = 3;    // 28BYJ48 In1
const int motorPin2 = 4;    // 28BYJ48 In2
const int motorPin3 = 5;    // 28BYJ48 In3
const int motorPin4 = 6;    // 28BYJ48 In4
                   
//definicion variables
int motorSpeed = 1200;   //variable para fijar la velocidad
int stepCounter = 0;     // contador para los pasos
int stepsPerRev = 1580;  // 527 pasos para un 1/4 de vuelta
 
//tablas con la secuencia de encendido (descomentar la que necesiteis)
//secuencia 1-fase
//const int numSteps = 4;
//const int stepsLookup[4] = { B1000, B0100, B0010, B0001 };
 
//secuencia 2-fases
//const int numSteps = 4;
//const int stepsLookup[4] = { B1001, B1100, B0110, B0011 };
 
//secuencia media fase
const int numSteps = 8;
const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };
unsigned long start; 
 
void setup() {

	//Declarar pines como salida motor paso a paso
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  
 
  // Sensor Temperatura DHT22
  Serial.begin(9600);
  Serial.println("Prueba DHT22"); //Iniciamos la comunicacion Monitor Serial y editamos un texto descriptivo
  dht.begin(); //Iniciamos el sensor

}

void loop() {
   
  if (millis()> start) {

	  float h = dht.readHumidity();
	  float t = dht.readTemperature();  //Establecemos dos variables, una para la temperatura en ºC y otra para la humedad relativa en %

	  if (isnan(h) || isnan(t)) {
	    Serial.println("Error al Leer Sensor DHT¡"); //Con la funcion isnan controlamos que el valor recibido del sensor sea un número, sino dara error
	    return;
	    //if (digitalRead(2)==HIGH)
	  }

	  Serial.print("Humedad: ");   //Mostramos la información obtenida (temperatura y humedad) en el Monitor Serial
	  Serial.print(h);             //El \t es equivalente al tabulador (separa los datos)
	  Serial.print(" %\t");        //El Serial.prinln nos cambia de linea en la siguiente lectura recibida
	  Serial.print("Temperatura: "); 
	  Serial.print(t);
	  Serial.println(" *C ");

	  lcd.begin(16, 2);  //Indicamos el LCD que usamos: 16 caracteres y 2 lineas
	  lcd.setCursor(0,0); //Situamos el cursor en la posicion 0 de la primera linea
	  lcd.write("Temp.: "); 
	  lcd.setCursor(9,0); 
	  lcd.print(t);
	  lcd.setCursor(14,0); 
	  lcd.write((char)223); //Editamos el simbolo de los grados º
	  lcd.setCursor(15,0); 
	  lcd.write("C");
	  lcd.setCursor(0,1); 
	  lcd.write("Humedad: "); 
	  lcd.setCursor(9,1); 
	  lcd.print(h);
	  lcd.setCursor(14,1);
	  lcd.write("%");

	  start = millis() +2000UL;
  }

  //PaP

  for (int i = 0; i < stepsPerRev * 0; i++) {
    clockwise();
    delayMicroseconds(motorSpeed);
  }

  for (int i = 0; i < stepsPerRev * 2; i++) {
    anticlockwise();
    delayMicroseconds(motorSpeed);
  }

  // delay(2000); // 7190000 equivale a 2 horas
}
 
void clockwise()
{
  stepCounter++;
  if (stepCounter >= numSteps) stepCounter = 0;
  setOutput(stepCounter);
}
 
void anticlockwise()
{
  stepCounter--;
  if (stepCounter < 0) stepCounter = numSteps - 1;
  setOutput(stepCounter);
}
 
void setOutput(int step)
{
  digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
  digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
  digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
  digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));

}

Tu sensor DHT se mostrará cada 2 seg pero el servo se va a mover continuamente.

Hola, si eh leido un poco, pero si has leido soy muy novato y no entiendo bien el tema de millis, y necesito que el dht se muestre cada 2 seg y el motor se active cada 2h.

desde ya muchas gracias.

El dht se activa cada 2 seg
Ya te lo corrijo para que el motor lo haga cada 2h

#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 8, 9, 10 , 11, 12); 
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT22


DHT dht(DHTPIN, DHTTYPE);


//Motor Paso a Paso 

//definicion de pins
const int motorPin1 = 3;    // 28BYJ48 In1
const int motorPin2 = 4;    // 28BYJ48 In2
const int motorPin3 = 5;    // 28BYJ48 In3
const int motorPin4 = 6;    // 28BYJ48 In4
                   
//definicion variables
int motorSpeed = 1200;   //variable para fijar la velocidad
int stepCounter = 0;     // contador para los pasos
int stepsPerRev = 1580;  // 527 pasos para un 1/4 de vuelta
 
//tablas con la secuencia de encendido (descomentar la que necesiteis)
//secuencia 1-fase
//const int numSteps = 4;
//const int stepsLookup[4] = { B1000, B0100, B0010, B0001 };
 
//secuencia 2-fases
//const int numSteps = 4;
//const int stepsLookup[4] = { B1001, B1100, B0110, B0011 };
 
//secuencia media fase
const int numSteps = 8;
const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };
unsigned long startDHT, startmotor; 
 
void setup() {

	//Declarar pines como salida motor paso a paso
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  
 
  // Sensor Temperatura DHT22
  Serial.begin(9600);
  Serial.println("Prueba DHT22"); //Iniciamos la comunicacion Monitor Serial y editamos un texto descriptivo
  dht.begin(); //Iniciamos el sensor

}

void loop() {
   
  if (millis()> startDHT) {

	  float h = dht.readHumidity();
	  float t = dht.readTemperature();  //Establecemos dos variables, una para la temperatura en ºC y otra para la humedad relativa en %

	  if (isnan(h) || isnan(t)) {
	    Serial.println("Error al Leer Sensor DHT¡"); //Con la funcion isnan controlamos que el valor recibido del sensor sea un número, sino dara error
	    return;
	    //if (digitalRead(2)==HIGH)
	  }

	  Serial.print("Humedad: ");   //Mostramos la información obtenida (temperatura y humedad) en el Monitor Serial
	  Serial.print(h);             //El \t es equivalente al tabulador (separa los datos)
	  Serial.print(" %\t");        //El Serial.prinln nos cambia de linea en la siguiente lectura recibida
	  Serial.print("Temperatura: "); 
	  Serial.print(t);
	  Serial.println(" *C ");

	  lcd.begin(16, 2);  //Indicamos el LCD que usamos: 16 caracteres y 2 lineas
	  lcd.setCursor(0,0); //Situamos el cursor en la posicion 0 de la primera linea
	  lcd.write("Temp.: "); 
	  lcd.setCursor(9,0); 
	  lcd.print(t);
	  lcd.setCursor(14,0); 
	  lcd.write((char)223); //Editamos el simbolo de los grados º
	  lcd.setCursor(15,0); 
	  lcd.write("C");
	  lcd.setCursor(0,1); 
	  lcd.write("Humedad: "); 
	  lcd.setCursor(9,1); 
	  lcd.print(h);
	  lcd.setCursor(14,1);
	  lcd.write("%");

	  startDHT = millis() +2000UL;
  }

  if (millis() > startmotor) {
	  //PaP
	  for (int i = 0; i < stepsPerRev * 0; i++) {
	    clockwise();
	    delayMicroseconds(motorSpeed);
	  }

	  for (int i = 0; i < stepsPerRev * 2; i++) {
	    anticlockwise();
	    delayMicroseconds(motorSpeed);
	  }
	  startmotor = millis() +2*3600000UL;
  }

  // delay(2000); // 7190000 equivale a 2 horas
}
 
void clockwise()
{
  stepCounter++;
  if (stepCounter >= numSteps) stepCounter = 0;
  setOutput(stepCounter);
}
 
void anticlockwise()
{
  stepCounter--;
  if (stepCounter < 0) stepCounter = numSteps - 1;
  setOutput(stepCounter);
}
 
void setOutput(int step)
{
  digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
  digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
  digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
  digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));

}

CONSEJO: Si te metes con estas cosas estudia. No siempre habrá un benefactor que te haga las cosas.

Muchas Gracias por el aporte, en breve lo estare probando.

muchas gracias Surbyte.

Muchas gracias Surbyte, funciona perfecto.