#include <Servo.h>
const int trigger=3;
const int echo=2;
const int nAngles = 5;
Servo xServo;
const int angles [nAngles] = {0, 45, 90, 135, 180};
float ranges [nAngles];
void setup()
{
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
xServo.attach(10);
}
void loop()
{
for (int i = 0; i < nAngles; ++i) {
xServo.write (angles [i]);
delay (500);
ranges [i] = getRange ();
delay(50);
}
for (int i = 0; i < nAngles; ++i) {
Serial.println(ranges [i]);
}
if((ranges[0]<ranges[1]) || (ranges[0]<ranges[2]) || (ranges[0]<ranges[3]) || (ranges[0]<ranges[4]))
{
xServo.write(0);
delay(2000);
}
else if((ranges[1]<ranges[0]) || (ranges[1]<ranges[2]) || (ranges[1]<ranges[3]) || (ranges[1]<ranges[4]))
{
xServo.write(45);
delay(2000);
}
else if((ranges[2]<ranges[0]) || (ranges[2]<ranges[1]) || (ranges[2]<ranges[3]) || (ranges[2]<ranges[4]))
{
xServo.write(90);
delay(2000);
}
else if((ranges[3]<ranges[0]) || (ranges[3]<ranges[1]) || (ranges[3]<ranges[2]) || (ranges[3]<ranges[4]))
{
xServo.write(135);
delay(2000);
}
else if((ranges[4]<ranges[0]) || (ranges[4]<ranges[1]) || (ranges[4]<ranges[2]) || (ranges[4]<ranges[3]))
{
xServo.write(180);
delay(2000);
}
}
float getRange ()
{
digitalWrite(trigger,LOW);
delayMicroseconds(5);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
return pulseIn(echo,HIGH) * 0.0001657;
}
Here is my code sir. The servo is not facing the nearest range. Is my program correct?..
just edit it from the code you gave me sir.. :))
Moderator edit: Please Use CODE TAGS when posting code. Click on the # icon on the editor's toolbar, and paste your code between the tags which appear.