#include <AccelStepper.h>
// Definisci i pin per i sensori di luminosità
const int ldrPin1 = A0; // Collega il primo sensore di luminosità qui
const int ldrPin2 = A1; // Collega il secondo sensore di luminosità qui
// Definisci il pin per il controllo del driver A4988
const int stepPin = 2; // Collega il pin Step del driver A4988
const int dirPin = 3; // Collega il pin Direction del driver A4988
// Imposta la velocità massima del motore
const int maxSpeed = 1000; // Puoi regolare questa velocità in base alle tue esigenze
// Creazione di un oggetto AccelStepper
AccelStepper stepper(1, stepPin, dirPin);
void setup() {
// Inizializza il motore passo-passo
stepper.setMaxSpeed(maxSpeed);
// Imposta il range di letture dei sensori di luminosità (puoi personalizzarlo)
analogReference(DEFAULT); // Riferimento analogico predefinito (0-5V)
pinMode(ldrPin1, INPUT);
pinMode(ldrPin2, INPUT);
Serial.begin(9600);
}
void loop() {
// Leggi i valori dai sensori di luminosità
int ldrValue1 = analogRead(ldrPin1);
int ldrValue2 = analogRead(ldrPin2);
// Calcola la differenza tra i valori dei sensori
int difference = ldrValue1 - ldrValue2;
// Imposta la direzione del motore in base alla differenza
if (difference > 50) {
// Se il sensore 1 è più illuminato, gira a destra
stepper.setSpeed(maxSpeed);
} else if (difference < -50) {
// Se il sensore 2 è più illuminato, gira a sinistra
stepper.setSpeed(-maxSpeed);
} else {
// Se entrambi i sensori sono simili, fermati
stepper.setSpeed(0);
}
// Fai un passo del motore
stepper.runSpeed();
// Mostra i valori dei sensori sui monitor Serial
Serial.print("LDR1: ");
Serial.print(ldrValue1);
Serial.print(" | LDR2: ");
Serial.print(ldrValue2);
Serial.print(" | Difference: ");
Serial.println(difference);
delay(1000); // Aggiorna la posizione ogni secondo (puoi personalizzare il tempo)
}