Problema modulo ultrasonido HC-SR04

Buenas noches a todos, empecé hace no mucho en este mundillo y he decidido dar el salto a los motores DC y toda esta parte.

Compré dos motores de corriente continua, un motor shield y un sensor ultrasonico HC-SR04. Cuando fui a conectarlos lei que los pines análogicos se podían usar como digitales, para conectar el sensor. Cuando fui a conectar los pines Echo y Trigger al 14 y 15 respectivamente y a probar el funcionamiento, vi que no detectaba el sensor. He probado de varias maneras y no se como solucionarlo, si alguien me pudiese ayudar le estaría muy agradecido.

Trabajo con un arduino UNO y un motorshield L293

podrias especificar el codigo de arduino que utilizaste. Recuerda que debes generar un pulso en el pin Trigger y recibirlo por el Echo. Tambien podrias ser mas especifico en que salida estas obteniendo en las condiciones que mencionas

Te recomiendo la librería NewPing mira los ejemplos y modifica los pines de trigger y echo a los analógicos qué específicas recuerda leer las normas del foro para saber como postear correctamente ya que debiste dar más detalles como el código que has hecho los libros o páginas que has leído entre otros

Disculpad mi ignorancia, el problema en concreto es que si pongo en los pines Trigger y Echo en los pines 2 y 13, por ejemplo, funciona perfectamente, pero nunca he soldado por lo que no me atrevo y preferiría ponerlo en los pines analógicos, pero cuando lo conecto ahi y miro la distancia en la consola, siempre sale 0.

Les dejo el código por si hay algun error al nombrar los pines analógicos

const int EchoPin = 15;
const int TriggerPin = 14;
const int LedPin = 10;

void setup() {
  Serial.begin(9600);
  pinMode(LedPin, OUTPUT);
  pinMode(TriggerPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}

void loop() {
  int cm = ping(TriggerPin, EchoPin);
  Serial.print("Distancia: ");
  Serial.println(cm);
  delay(1000);
}

int ping(int TriggerPin, int EchoPin) {
  long duration, distanceCm;
  
  digitalWrite(TriggerPin, LOW);  
  delayMicroseconds(4);
  digitalWrite(TriggerPin, HIGH);  
  delayMicroseconds(10);
  digitalWrite(TriggerPin, LOW);
  
  duration = pulseIn(EchoPin, HIGH);  
  distanceCm = duration * 10 / 292/ 2;   
  return distanceCm;
}

Gracias de antemano

Por favor, edita tu mensaje y pon el código como lo piden las normas del foro. Gracias!

Ya lo hice, disculpe las molestias, se me olvidó.

Prueba a utilizar la nomenclatura de los pines directamente, en lugar de intentar descifrar qué número de pin se corresponde. Eso suele estar definido en los core de cada modelo de arduino:

const int EchoPin = A1;
const int TriggerPin = A2;
const int LedPin = 10;

noter: Prueba a utilizar la nomenclatura de los pines directamente, en lugar de intentar descifrar qué número de pin se corresponde. Eso suele estar definido en los core de cada modelo de arduino:

const int EchoPin = A1;
const int TriggerPin = A2;
const int LedPin = 10;

Gracias por su aportación, ya he probado pero nada. Cuando entro a la consola sale distancia 0 siempre, excepto si aprieto el cable mientras esta conectado a los pines, que me sale un valor de la distancia cercano a 300, pero no es posible ya que apunto a la pared que esta al lado.

He probado a ponerlo en los pines digitales para probar y ahí si que funciona, pero quiero saber por qué no funciona en los analógicos, ya que me gustaría no tener que soldar nada aún. Gracias

firius2010: Te recomiendo la librería NewPing mira los ejemplos y modifica los pines de trigger y echo a los analógicos qué específicas recuerda leer las normas del foro para saber como postear correctamente ya que debiste dar más detalles como el código que has hecho los libros o páginas que has leído entre otros

Si eres novato, no intentes reinventar la rueda. USA las librerías que existen para cada caso. El aporte de firius2010 es tu mejor opción. Prueba con un ejemplo de la librería y no falla.

surbyte:
Si eres novato, no intentes reinventar la rueda. USA las librerías que existen para cada caso.
El aporte de firius2010 es tu mejor opción. Prueba con un ejemplo de la librería y no falla.

Buenas, vuelvo a ponerme en contacto con vosotros ya que el error no se ha solucionado. He instalado la libreria que me dijo nuestro compañero firius, pero ahora me da un error distinto. El codigo que utilizo es el siguiente:

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // 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");
}

El nuevo problema es que cuando conecto a los pines analógicos y me meto en la consola para ver la distancia, salen carácteres sin sentido que no se que significan, les adjunto una imagen en el siguiente post. Gracias de antemano

Aqui esta la imagen

La imagen esta mal posteada, usa los tags. Seguramente los caracteres raros se debe a que ahora definiste el Serial.begin(115200); y antes estaba a 9600.

Hay que mirar e intentar entender un poco lo que tienes delante. Bueno, eso se va logrando con los programas. Si cambias los baudios, los caracteres salen así... como locos.

surbyte:
La imagen esta mal posteada, usa los tags.
Seguramente los caracteres raros se debe a que ahora definiste el Serial.begin(115200); y antes estaba a 9600.

Hay que mirar e intentar entender un poco lo que tienes delante.
Bueno, eso se va logrando con los programas.
Si cambias los baudios, los caracteres salen así… como locos.

He hecho lo que has comentado, he puesto Seria.begin(9600) en lugar de 115200 como venía en el ejemplo, y los caracteres ya no salen asi, ahora mi codigo queda tal que asi:

#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(9600); // 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");
}

Ahora siempre sale que la distancia es 0, y no se por qué. He comprobado todas las conexiones y estan bien y ya he probado todo lo que habeis comentado. No sé si el problema estará en la programación como tal o en el estado de los componentes…

amigo te cuento que tu problema debe de ser de hardware , debido a que probe el codigo que posteas tal cual lo configuras en el codigo, hice las conexiones debidas con un hcsr04 que tenia a la mano y funciona perfecto en los los pines que vos indicas asi que o estas conectado mal el hcsr04, o este esta dañado, o esos pines se te dañaron.

|500x281