#include <Stepper.h>
// Definición de pines
const int PinDePasos = 2; // Pin para controlar el motor paso a paso (A+)
const int PinDeDirec = 3; // Pin para dirección del motor paso a paso (A-)
const int FrenoPin = 4; // Pin para el relay de freno
const int potPin = A0; // Pin para la lectura del potenciómetro
const int DerechaLedPin = 5; // Pin para el LED de giro derecho
const int IzquierdaLedPin = 6; // Pin para el LED de giro izquierdo
// Parámetros del motor
const int PasosPorRevolucion = 4096; // Para el motor 28BYJ-48
Stepper stepper(PasosPorRevolucion, PinDePasos, PinDeDirec); // Define Objeto, Pin2, Pin3
void setup() {
pinMode(FrenoPin, OUTPUT); // Pin4 Salida
pinMode(DerechaLedPin, OUTPUT); // Pin5 Salida led derecho
pinMode(IzquierdaLedPin, OUTPUT); // Pin5 Salida led Izquiero
}
void loop() {
int potValor = analogRead(potPin); // lee el valor del Pin A0
int degrees = map(potValor, 0, 1023, 0, 180); // Variable en grados, rango del pot a grados
if (potValor < 600) { // menor que 100 mover a la izquierda
digitalWrite(FrenoPin, HIGH); // Desconecta el freno
digitalWrite(IzquierdaLedPin, HIGH); // Enciende led izq
digitalWrite(DerechaLedPin, LOW); // Apaga led izq
stepper.setSpeed(10); // Velocidad del motor
stepper.step(-degrees * PasosPorRevolucion / 180);
digitalWrite(FrenoPin, LOW); // Conecta el freno
digitalWrite(IzquierdaLedPin, LOW); // Apaga led izq
}
else if (potValor > 600) { // Mover a la derecha
digitalWrite(FrenoPin, HIGH); // Desconecta el freno
digitalWrite(IzquierdaLedPin, LOW); // Apaga led izq
digitalWrite(DerechaLedPin, HIGH); // Enciende led der
stepper.setSpeed(10); // Velocidad del motor
stepper.step(degrees * PasosPorRevolucion / 180);
digitalWrite(FrenoPin, LOW); // Conecta el freno
digitalWrite(DerechaLedPin, LOW); // Apaga led der
}
else { // Detener el motor
stepper.setSpeed(0);
}
}