¡Hola! Estoy teniendo unos problemas con el sensor ultrasónico HC-SR04 conectado a mi motor Shield. Lo conecté a los pines analógicos A0 (TRIGGER) y A1 (ECO) junto con el GND y 5V+
Sin embargo, por más que en todos lados lo vea conectado así, me sigue sin funcionar, y es un proyecto a entregar hoy D:
Creo que el problema es mi código:
#include <NewPing.h>
#include <AFMotor.h>
#define TRIGGER A0
#define ECHO A1
AF_Stepper motor1(256, 1); // A la puerta M1 M2
AF_Stepper motor2(256, 2); // A la puerta M3 M4
NewPing Dist(TRIGGER, ECHO, 200);
void setup() {
Serial.begin(9600);
Serial.println("Empezando a andar los motores");
motor1.setSpeed(50); // 50 rpm
motor2.setSpeed(50); // 50 rpm
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
int distancia = Dist.ping_cm();
Serial.println(distancia);
if(distancia <= 50 && distancia >= 1){
Serial.println("Adelante");
motor1.step(1000, FORWARD, SINGLE);
motor2.step(1000, FORWARD, SINGLE);
}
else{
Serial.println("Atras");
motor1.step(1000, BACKWARD, SINGLE);
motor2.step(1000, BACKWARD, SINGLE);
}
}
A este shield está conectado 2 motores NEMA17, aclaro.
Aunque los pines deberían funcionar porque los usas?
Si usas NewPing no tienes que usar esto
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
Este es un código simple ejemplo que adapté a tus pines A0 y A1
#include <NewPing.h>
#define TRIGGER_PIN A0 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN A1 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
}
¿Que motor shield estas usando?, lo pregunto porque existe uno por el mercado que usa los pines A0 y A1 para monitorear la corriente , usa los puertos A2 y A3 a ver que pasa.
El tema siempre es el mismo.
Cuando tienes un problema, separa las cosas.
Prueba x un lado sensor y por otro el motor.
Luego compara resultados, mira si hay simultaneidad de pines utilizados.
Eso te ahorrará tiempo y sabrás que esta pasando. Además de aprender a usar cada cosas correctamente y no empezar por el lado mas difícil.
Algo mas, agota instancias antes de consultarnos. Prueba todo, lee que dice el código, si dice Serial.begin(X) usa X en tu monitor Serial.