Go Down

Topic: Which pins to the ultrasonic sensors go into (Read 210 times) previous topic - next topic

Neutrideo

Hi, this is the code i am using
/*

RC Car + Ping sensor code

*/

// this constant won't change. It's the pin number
// of the sensor's output:
const int pingPin = 7;
const int fowardPin = 12;
const int backwardPin = 11;
const int rightPin = 10;
const int leftPin = 9;

void setup() {
// initialize serial communication:
Serial.begin(9600);
Serial.println("Motor test!");
pinMode(fowardPin, OUTPUT);
pinMode(backwardPin, OUTPUT);
pinMode(leftPin, OUTPUT);
pinMode(rightPin, OUTPUT);
}

void loop()
{
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, inches, cm;

// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);

// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();

delay(100);

if (inches > 10) {
digitalWrite(fowardPin, HIGH);
}
else {
Serial.println("stop");
digitalWrite(fowardPin, LOW);
delay(500);
Serial.println("backup");
digitalWrite(backwardPin, HIGH);
digitalWrite(rightPin, HIGH);
delay(3000);
digitalWrite(backwardPin, LOW);
digitalWrite(rightPin, LOW);
}

}

long microsecondsToInches(long microseconds)
{
// According to Parallax's datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}

And i cant tell which pins the ultrasonic goes into.

pert

Please use code tags (</> button on the toolbar) when you post code or warning/error messages. The reason is that the forum software can interpret parts of your code as markup, leading to confusion, wasted time, and a reduced chance for you to get help with your problem. This will also make it easier to read your code and to copy it to the IDE or editor. Using code tags and other important information is explained in the How to use this forum post. Please read it.

Please always do a Tools > Auto Format on your code before posting it. This will make it easier for you to spot bugs and make it easier for us to read.

Connect the sensor to pin 7.

Neutrideo

Please use code tags (</> button on the toolbar) when you post code or warning/error messages. The reason is that the forum software can interpret parts of your code as markup, leading to confusion, wasted time, and a reduced chance for you to get help with your problem. This will also make it easier to read your code and to copy it to the IDE or editor. Using code tags and other important information is explained in the How to use this forum post. Please read it.

Please always do a Tools > Auto Format on your code before posting it. This will make it easier for you to spot bugs and make it easier for us to read.

Connect the sensor to pin 7.
I am using a HC-SRO4 ultra sonic sensor, on the pins on the sensor the pins are labelled, Gnd, Echo, Trig and Vcc

sterretje

#3
May 06, 2017, 03:31 am Last Edit: May 06, 2017, 03:33 am by sterretje
Looks like this code uses 'echo' and 'trig' on the same pin. Whether it works or not, I don't know; just like you, I only have experience with the 'standard' connections/

Please edit your opening post and use code tags as requested by @pert
Type [code] before your code.
Type [/code] after your code.
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

pert

I am using a HC-SRO4 ultra sonic sensor, on the pins on the sensor the pins are labelled, Gnd, Echo, Trig and Vcc
The Parallax PING))) sensor mentioned in the comments of that code uses one pin for echo and trig. I believe you can use HC-SR04 the same way if you want to free up a pin on your Arduino. The idea is that you will either be triggering a ping or listening for the echo, never both at once so you can just switch a single pin from output to input mode. I've never been so short on pins in a project that used the ultrasonic sensors that I felt the need to do this. With a tiny bit of searching you can find a ton of code written for using a separate pin on your Arduino for Echo and Trig if that's confusing you. There's no need to feel locked into that sketch you have. This library seems pretty popular and will work with the 4 pin sensor:
https://bitbucket.org/teckel12/arduino-new-ping

So basically you need to connect it as follows:
  • Gnd on the sensor to Gnd on your Arduino
  • Echo to whatever pin on your Arduino you have set to be used in your code
  • Trig to whatever pin on your Arduino you have set to be used in your code
  • Vcc to 5V on your Arduino

Go Up