#include <AccelStepper.h>
#define ENABLE_PIN 4
#define LDR_PIN1 34 // Pin analógico para el primer LDR en ESP32
#define LDR_PIN2 35 // Pin analógico para el segundo LDR en ESP32
#define MOTOR_STEP_PIN 26 // Pin para los pasos del motor
#define MOTOR_DIR_PIN 27 // Pin para la dirección del motor
#define led1 32 // Pin analógico para el primer LDR en ESP32
#define led2 33 // Pin analógico para el primer LDR en ESP32
int minStep = 0; // Paso mínimo (0 grados)
int maxStep = 100; // Paso máximo (180 grados), ajusta según tus necesidades
AccelStepper stepper(1, MOTOR_STEP_PIN, MOTOR_DIR_PIN);
void setup() {
// Configurar los pines
pinMode(LDR_PIN1, INPUT);
pinMode(LDR_PIN2, INPUT);
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW); // Habilitar el controlador A4988
// Configurar motor
stepper.setMaxSpeed(1000); // Velocidad máxima del motor
stepper.setAcceleration(500); // Aceleración del motor
stepper.setCurrentPosition(minStep); // Inicializa la posición en el mínimo
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
// Leer valores analógicos de los LDR
int ldrValue1 = analogRead(LDR_PIN1);
int ldrValue2 = analogRead(LDR_PIN2);
// Calcular la diferencia de lectura entre los dos LDR
int ldrDifference = ldrValue1 - ldrValue2;
// Determinar la dirección del movimiento del motor
if (ldrDifference > 10 && stepper.currentPosition() < maxStep) {
stepper.move(1); // Mover el motor en una dirección
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
} else if (ldrDifference < -10 && stepper.currentPosition() > minStep) {
stepper.move(-1); // Mover el motor en la dirección opuesta
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
}
// Ejecutar el motor
stepper.run();
}