i am writing a code which will hopefully replicate a parking sensor using ultrasonic sensor, it is really similar to the PING tutorial. i am trying to add a buzzer which should start to beep more frequent as the distance to an object reduces. the buzzer needs to beep at 4cm and then more frequent at 3cm and even more frequent at 2cm and pretty much flatline at 1cm. please help me, its probably very simple.
here is my code:
byte triggerright=2;
byte echoright = 3;
float distance, cm;
byte triggerleft=4;
byte echoleft = 5;
int distance2;
byte buzzer=11;
void setup (){
pinMode(buzzer, OUTPUT);
pinMode (triggerright, OUTPUT);
pinMode (echoright, INPUT);
pinMode (triggerright, OUTPUT);
pinMode (echoright, INPUT);
pinMode (triggerleft, OUTPUT);
pinMode (echoleft, INPUT);
pinMode (triggerleft, OUTPUT);
pinMode (echoleft, INPUT);
Serial.begin (9600);
}
void loop (){
digitalWrite(triggerright, LOW);
delayMicroseconds(2);
digitalWrite(triggerright, HIGH);
delayMicroseconds(15);
digitalWrite(triggerright, LOW);
delayMicroseconds(20);
digitalWrite(triggerleft, LOW);
delayMicroseconds(2);
digitalWrite(triggerleft, HIGH);
delayMicroseconds(15);
digitalWrite(triggerleft, LOW);
delayMicroseconds(20);
distance = pulseIn (echoright,HIGH);
cm = microsecondsToCentimeters(distance);
/* Serial.println("the distance is...");
Serial.print((2,3));Serial.print("cm");
Serial.println("");
delay (1500);
*/
while (cm<4)
{
/* analogWrite (11,128);
delay (150);
digitalWrite (11,LOW);
delay (150);
analogWrite (11,128);
delay (150);
digitalWrite (11,LOW);
delay (150);
*/
analogWrite(11, 128);
delay(100);
digitalWrite(11, LOW);
delay(100);
analogWrite(11, 128);
delay(100);
digitalWrite(11, LOW);
delay(100);
}
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay (2000);
}
float microsecondsToCentimeters(float 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;
}