Here is my entire code. I want the robot to decipher, at a certain servo position, which distance is longer, and from there to turn towards and drive in that direction. thanks for any help. and the error message was in my dual "if" statement where i said
if((servo.write(position) < 90) && (inches > 12)){
Reverse();
TurnLeft();
}
the error message said "name lookup of 'position' changed for new ISO 'for' scoping"
#include <Servo.h>
# define maxspeed 250
# define halfspeed 125
# define drivespeed 200
Servo servo;
const int pingPin = 7;
int dirB = 13;
int dirA = 12;
int speedB = 11;
int speedA = 3;
int brakeB = 8;
int brakeA = 9;
int servopin = 10;
void setup() {
Serial.begin(9600);
pinMode(dirB,OUTPUT); //direction of ch. B
pinMode(dirA,OUTPUT); //direction of ch. A
pinMode(speedB,OUTPUT); //PWM ch. B
pinMode(speedA,OUTPUT); //PWM ch. A
pinMode(brakeB,OUTPUT); //Brake B
pinMode(brakeA,OUTPUT); //Brake A
servo.attach(servopin);
}
void loop()
{
long duration, inches, cm;
Drive();
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
if (inches < 12){
Stop();
servo.write(2);
for(int position=0; position<=180; position+=1) {
servo.write(position);
delay(10);
}
servo.write(180);
for(int position=180; position>=0; position-=1) {
servo.write(position);
delay(10);
}
servo.write(90);
delay(50);
if((servo.write(position) < 90) && (inches > 12)){
Reverse();
TurnLeft();
}
if(servo.write(position) > 91 && inches > 12){
Reverse();
TurnRight();
}
}
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
long microsecondsToInches(long microseconds)
{
return microseconds / 73.746 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
void Drive() {
ReleaseBrakes();
digitalWrite(dirA,0);
analogWrite(speedA, drivespeed);
digitalWrite(dirB,255);
analogWrite(speedB, drivespeed);
}
void Stop() {
delay(50);
digitalWrite(brakeB,HIGH);
digitalWrite(brakeA,HIGH);
delay(500);
}
void ReleaseBrakes() {
delay(10);
digitalWrite(brakeB,LOW);
digitalWrite(brakeA,LOW);
}
void Reverse() {
delay(50);
ReleaseBrakes();
digitalWrite(dirA,255);
analogWrite(speedA, halfspeed);
digitalWrite(dirB,0);
analogWrite(speedB, halfspeed);
delay(1500);
}
void TurnRight() {
delay(10);
digitalWrite(dirA,0);
analogWrite(speedA, maxspeed);
digitalWrite(dirB,0);
analogWrite(speedB, maxspeed);
delay(775);
}
void TurnLeft() {
delay(10);
digitalWrite(dirA,255);
analogWrite(speedA,maxspeed);
digitalWrite(dirB,255);
analogWrite(speedB,maxspeed);
delay(775);
}