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));
}