i cant fix this error can someone help me?this project i have copied from buildautomnous line follower
long sensors_average;
int sensors_sum;
int position;
long sensors[] = {0, 0, 0, 0, 0}; // Array used to store 5 readings for 5
sensors.
int proportional;
int integral;
int derivative;
int last_proportional;
int Kp;
int Ki;
int Kd;
int max_speed;
int left_speed;
int right_speed;
int error_value;
void setup()
{
}
void loop()
sensors_read(); //Reads sensor values and computes sensor sum and weighted average
pid_calc(); //Calculates position[set point] and computes Kp,Ki and Kd
calc_turn(); //Computes the error to be corrected
motor_drive(right_speed, left_speed); //Sends PWM signals to the motors
}
void pid_calc()
{ position = int(sensors_average / sensors_sum);
proportional = position – set_point; // Replace set_point by your set point
integral = integral + proportional;
derivative = proportional - last_proportional;
last_proportional = proportional;
error_value = int(proportional * Kp + integral * Ki + derivative * Kd);
}
void sensors_read()
{
sensors_average = 0;
sensors_sum = 0;
for (int i = 0; i < 5; i++)
{
sensors[i] = analogRead(i);
sensors_average += sensors[i] * i * 1000; //Calculating the weighted mean of the sensor
readings
sensors_sum += int(sensors[i]); //Calculating sum of sensor readings
}
}
void calc_turn()
{ //Restricting the error value between +256.
if (error_value < -256)
{
error_value = -256;
}
if (error_value > 256)
{
error_value = 256;
}
// If error_value is less than zero calculate right turn speed values
if (error_value < 0)
{
right_speed = max_speed + error_value;
left_speed = max_speed;
}
// If error_value is greater than zero calculate left turn values
else
{
right_speed = max_speed;
left_speed = max_speed - error_value;
}
}
the error:
sketch_feb13a:40: error: stray '' in program
sketch_feb13a:6: error: expected constructor, destructor, or type conversion before '.' token
sketch_feb13a:31: error: expected initializer before 'sensors_read'
sketch_feb13a:32: error: expected constructor, destructor, or type conversion before ';' token
sketch_feb13a:33: error: expected constructor, destructor, or type conversion before ';' token
sketch_feb13a:34: error: expected constructor, destructor, or type conversion before '(' token
sketch_feb13a:35: error: expected declaration before '}' token
long sensors_average;
int sensors_sum;
int position;
long sensors[] = {0, 0, 0, 0, 0}; // Array used to store 5 readings for 5
int proportional;
int integral;
int derivative;
int last_proportional;
int Kp;
int Ki;
int Kd;
int max_speed;
int left_speed;
int right_speed;
int error_value;
int threshold;
int readings;
void setup()
{
}
void loop()
{
sensors_read(); //Reads sensor values and computes sensor sum and weighted average
pid_calc(); //Calculates position[set point] and computes Kp,Ki and Kd
calc_turn(); //Computes the error to be corrected
//motor_drive(right_speed, left_speed); //Sends PWM signals to the motors
}
void pid_calc()
{
position = int(sensors_average / sensors_sum);
proportional = position – set_point; // Replace set_point by your set point
integral = integral + proportional;
derivative = proportional - last_proportional;
last_proportional = proportional;
error_value = int(proportional * Kp + integral * Ki + derivative * Kd);
}
void sensors_read()
{ sensors_average = 0;
sensors_sum = 0;
for (int i = 0; i < 5; i++)
{
sensors[i] = analogRead(i);
// Readings less than threshold are filtered out for noise
if (sensors[i] < threshold)
sensors[i] = 0;
sensors_average += sensors[i] * i * 1000; //Calculating the weighted mean of the sensor
//readings
sensors_sum += int(sensors[i]); //Calculating sum of sensor readings
}
}
void calc_turn()
{ //Restricting the error value between +256.
if (error_value < -256)
{
error_value = -256;
}
if (error_value > 256)
{
error_value = 256;
}
// If error_value is less than zero calculate right turn speed values
if (error_value < 0)
{
right_speed = max_speed + error_value;
left_speed = max_speed;
}
// If error_value is greater than zero calculate left turn values
else
{
right_speed = max_speed;
left_speed = max_speed - error_value;
}
}
errors:
sketch_feb13a:42: error: stray '' in program
sketch_feb13a.ino: In function 'void pid_calc()':
sketch_feb13a:42: error: expected `;' before 'u2013'
long sensors_average;
int sensors_sum;
int position;
long sensors[] = {
0, 0, 0, 0, 0}; // Array used to store 5 readings for 5
int proportional;
int integral;
int derivative;
int last_proportional;
int Kp;
int Ki;
int Kd;
int max_speed;
int left_speed;
int right_speed;
int error_value;
int threshold;
int readings;
void setup()
{
}
void loop()
{
sensors_read(); //Reads sensor values and computes sensor sum and weighted average
pid_calc(); //Calculates position[set point] and computes Kp,Ki and Kd
calc_turn(); //Computes the error to be corrected
//motor_drive(right_speed, left_speed); //Sends PWM signals to the motors
}
void pid_calc()
{
position = int(sensors_average / sensors_sum);
proportional = position - set_point; // Replace set_point by your set point
integral = integral + proportional;
derivative = proportional - last_proportional;
last_proportional = proportional;
error_value = int(proportional * Kp + integral * Ki + derivative * Kd);
}
void sensors_read()
{
sensors_average = 0;
sensors_sum = 0;
for (int i = 0; i < 5; i++)
{
sensors[i] = analogRead(i);
// Readings less than threshold are filtered out for noise
if (sensors[i] < threshold)
sensors[i] = 0;
sensors_average += sensors[i] * i * 1000; //Calculating the weighted mean of the sensor
//readings
sensors_sum += int(sensors[i]); //Calculating sum of sensor readings
}
}
void calc_turn()
{ //Restricting the error value between +256.
if (error_value < -256)
{
error_value = -256;
}
if (error_value > 256)
{
error_value = 256;
}
// If error_value is less than zero calculate right turn speed values
if (error_value < 0)
{
right_speed = max_speed + error_value;
left_speed = max_speed;
}
// If error_value is greater than zero calculate left turn values
else
{
right_speed = max_speed;
left_speed = max_speed - error_value;
}
}
I still get the error message about "set_point" but as the comment says, you are supposed to put your set point there. I don't know what that is.
// map motor poles to Arduino pins
#define motor1pole1 2
#define motor1pole2 3
#define motor2pole1 7
#define motor2pole2 8
// map L293d motor enable pins to Arduino pins
#define enablePin1 9
#define enablePin2 10
#define M1_MAX_SPEED 100
#define M2_MAX_SPEED 100
#define motordelay 30
#define debugmotorsec 3000
long sensors_average;
int sensors_sum;
int position;
long sensors[] = {
0, 0, 0, 0, 0}; // Array used to store 5 readings for 5
int proportional;
int integral;
int derivative;
int last_proportional;
int Kp;
int Ki;
int Kd;
int max_speed;
int left_speed;
int right_speed;
int error_value;
int threshold;
int readings;
int set_point;
int motor_drive;
void setup()
{
// set mapped L293D motor1 and motor 2 enable pins on Arduino to output (to turn on/off motor1 and motor2 via L293D)
pinMode(enablePin1, OUTPUT);
pinMode(enablePin2, OUTPUT);
// set mapped motor poles to Arduino pins (via L293D)
pinMode( motor1pole1 , OUTPUT);
pinMode( motor1pole2, OUTPUT);
pinMode( motor2pole1, OUTPUT);
pinMode( motor2pole2 , OUTPUT);
}
void loop()
{
sensors_read(); //Reads sensor values and computes sensor sum and weighted average
pid_calc(); //Calculates position[set point] and computes Kp,Ki and Kd
calc_turn(); //Computes the error to be corrected
motor_drive(right_speed, left_speed); //Sends PWM signals to the motors
}
void pid_calc()
{
position = int(sensors_average / sensors_sum);
proportional = position - set_point; // Replace set_point by your set point
integral = integral + proportional;
derivative = proportional - last_proportional;
last_proportional = proportional;
error_value = int(proportional * Kp + integral * Ki + derivative * Kd);
}
void sensors_read()
{
sensors_average = 0;
sensors_sum = 0;
for (int i = 0; i < 5; i++)
{
sensors[i] = analogRead(i);
// Readings less than threshold are filtered out for noise
if (sensors[i] < threshold)
sensors[i] = 0;
sensors_average += sensors[i] * i * 1000; //Calculating the weighted mean of the sensor
//readings
sensors_sum += int(sensors[i]); //Calculating sum of sensor readings
}
}
void calc_turn()
{ //Restricting the error value between +256.
if (error_value < -256)
{
error_value = -256;
}
if (error_value > 256)
{
error_value = 256;
}
// If error_value is less than zero calculate right turn speed values
if (error_value < 0)
{
right_speed = max_speed + error_value;
left_speed = max_speed;
}
// If error_value is greater than zero calculate left turn values
else
{
right_speed = max_speed;
left_speed = max_speed - error_value;
}
}
sketch_feb13a.ino: In function 'void loop()':
sketch_feb13a:55: error: 'motor_drive' cannot be used as a function
Not to the compiler it doesn't.
If ever I see the error message "stray ''...", I can put a pretty certain bet that the code has been copied from a website.
I get suspicious when a line says something about a stray "" when I don't see any of them. Then I look at the punctuation in the line. As a last resort, I would retype the whole thing.
That evil symbol! OP must have copied and pasted from some webpage maybe with different character coding.
OP,
I think frankly you should go through basic arduino and c tutorials. You don't seem to understand programming and yet want to do a project that needs some that understanding. Learn the basic first. We can help you write some code, correct mistakes, but you have to understand your (or what you found) code first.