Go Down

### Topic: make calculation off of data sent by Ping )) sensor (Read 635 times)previous topic - next topic

#### cashflow

##### Jan 05, 2013, 06:59 am
i have a ping )) sensor set up...and i want to simply count the number of times that the reading goes above X inches and Y centimeters...here is the code i'm using now:

const int pingPin = 7;

void setup() {
// initialize serial communication:
Serial.begin(9600);
}

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(".");
Serial.print(cm);
Serial.print("");
Serial.println();

delay(10);
}

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;
}

#### johnwasser

#1
##### Jan 05, 2013, 07:14 am
I see the code that prints out the values but I don't see any attempt to compare those values to anything.  Perhaps that should be your next step.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

#### robtillaart

#2
##### Jan 05, 2013, 12:02 pm
Quote
i want to simply count the number of times that the reading goes above X inches and Y centimeters

translates exact to
Code: [Select]
`if (inches > X && cm > Y) count++; `

but I assume this is not exact what you need
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

#### nabeel4sf

#3
##### Jan 14, 2013, 08:06 pm
how this code displays the distance?

#### johnwasser

#4
##### Jan 14, 2013, 10:07 pm

how this code displays the distance?

Code: [Select]
`  duration = pulseIn(pingPin, HIGH);   // convert the time into a distance   inches = microsecondsToInches(duration);     Serial.print(inches);`
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Go Up

Please enter a valid email to subscribe