error: 'microsecondsToCentimeters' was not declared in this scope

Hello,
my idea was building an rc car that steers using a Ping sensor. After a couple of hours searching and trying i didn’t find my problem. please help! :wink:

// this constant won’t change. It’s the pin number
// of the sensor’s output:
const int pingPin = 7;
int pwm_a = 3; //PWM control for motor outputs 1 and 2
int pwm_b = 9; //PWM control for motor outputs 3 and 4
int dir_a = 2; //direction control for motor outputs 1 and 2
int dir_b = 8; //direction control for motor outputs 3 and 4
int cm;

void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(pwm_a, OUTPUT); //Set control pins to be outputs
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);

analogWrite(pwm_a, 100); //set both motors to run at (100/255 = 39)% duty cycle (slow)
analogWrite(pwm_b, 100);
}

void loop()
{
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, 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
cm = microsecondsToCentimeters(duration);

Serial.print(cm);
Serial.print(“cm”);
Serial.print(dir_a);
Serial.println();

delay(100);

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

if(cm < 10) {digitalWrite(dir_a, HIGH);
analogWrite(pwm_a, 50);
}
if(cm > 10) {digitalWrite(dir_a, LOW);
analogWrite(pwm_a, 50);
}
else {analogWrite(pwm_a, 0);
}
}

The microsecondsToCentimeters function definition should be done outside the loop(). You have put it inside loop() definition. I hope this helps :)

And one more thing I think these type of questions should be posted in the appropriate section to get noticed.

thx for helping but can you please give an example? ;)

None of the supplied examples has a function declared inside another function. I'd work with those.