Hola, me podrían ayudar ? Mi proyecto consiste en hacer una barra de peaje mediante un motor a pasos y un sensor ultrasonico. No tuve probelmas al programar los parámetros de distancia del sensor, el problema es con el motor, creo un ciclo if para que cuando la distancia sea menor a 10cm, el motor de 512 pasos de los 2048 y se detenga, pero pasan 2 segundos y el motor sigue girando y así sucesivamente y lo que deseo es que se detenga por completo una ves haya dado los 512 pasos. Les comparto mi código, espero me puedan ayudar.
#include <Stepper.h>
const int pasos = 2048;
Stepper motor(pasos, 3, 5, 4, 6);
int detener = 0;
int trig = 12;
int echo = 11;
int tiempo;
int pare = 8;
int siga = 9;
void setup() {
Serial.begin(9600);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(pare, OUTPUT);
pinMode(siga, OUTPUT);
}
void loop() {
// Parametros de sensor ultrasonico
long duracion;
long distancia;
digitalWrite(trig, LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duracion = pulseIn(echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
Serial.println(distancia);
delay(50);
//Si la distancia es menor que 10, la barra de peaje baja y se activa el led rojo
if(distancia <=10){
digitalWrite(pare, HIGH);
motor.setSpeed(10);
motor.step(pasos/4);
delay(2000);
digitalWrite(pare, LOW);
digitalWrite(siga, HIGH);
}
//Si la distancia es mayor que 10, la barra de peaje sube y se activa el led verde
if(distancia >10){
digitalWrite(siga, HIGH);
motor.setSpeed(10);
motor.step(-pasos/4);
delay(2000);
digitalWrite(siga, LOW);
}
}