Estou fazendo um seguidor de linha e agora quando creio que ja terminei meu codigo aparece este seguinte erro ( error: expected unqualified-id before numeric constant ) ele não identifica nem um alinha so apresenta o erro. Pesquisei por esse erro mas não descobri o que ele significa e não consigo identificar o problema em meu codigo. Se alguem poder me ajudar fico grato
//Definições para controlar o Motores
#define enable1 12 // velocidade motor 1
#define enable2 13 // velocidade motor 2
#define A1 8 // motor 1
#define A2 9
#define B1 10 // motor 2
#define B2 11
//Definição dos pinos onde estão os sensores
#define linha1 22
#define linha2 24
#define linha3 26
#define linha4 28
#define linha5 30
#define linha6 32
void setup()
{
//Define pinos como saída
pinMode(enable1, OUTPUT);
pinMode(enable2, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(B2, OUTPUT);
}
void loop(){
int val_sensores = lesensores();
if (val_sensores == 0 || val_sensores == 10 || val_sensores == 20 )
{
IrFrente();
}
else if (val_sensores == 5 || val_sensores == 15 || val_sensores == 25 )
{
IrDireita();
}
else if (val_sensores == 3 || val_sensores == 13 || val_sensores == 23 )
{
IrEsquerda();
}
else if (val_sensores == 7 || val_sensores == 22 || val_sensores == 32 )
{
girar90grausDireita();
}
else if (val_sensores == 1 || val_sensores == 14 || val_sensores == 24 )
{
girar90grausEsquerda();
}
}
void IrFrente(){
analogWrite(enable1, 255);
analogWrite(enable2, 255);
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(B1, LOW);
digitalWrite(B2, HIGH);
}
void IrEsquerda(){
analogWrite(enable1, 255);
analogWrite(enable2, 0);
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(B1, LOW);
digitalWrite(B2, HIGH);
}
void IrDireita(){
analogWrite(enable1, 0);
analogWrite(enable2, 255);
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(B1, LOW);
digitalWrite(B2, HIGH);
}
void girar90grausDireita(){
analogWrite(enable1, 200);
analogWrite(enable2, 200);
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(B1, HIGH);
digitalWrite(B2, LOW);
delay(450);
}
void girar90grausEsquerda(){
analogWrite(enable1, 200);
analogWrite(enable2, 200);
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(B1, LOW);
digitalWrite(B2, HIGH);
delay(450);
}
int lesensores(){
//--------------------
int sensores = 0;
pinMode( linha1, OUTPUT );
digitalWrite( linha1, HIGH );
delayMicroseconds(10);
pinMode( linha1, INPUT );
long time1 = micros();
while (digitalRead(linha1) == HIGH && micros() - time1 < 3000);
int diff1 = micros() - time1;
if (diff1 > 1600)
sensores += 1;
//---------------------
pinMode( linha2, OUTPUT );
digitalWrite( linha2, HIGH );
delayMicroseconds(10);
pinMode( linha2, INPUT );
long time2 = micros();
while (digitalRead(linha2) == HIGH && micros() - time2 < 3000);
int diff2 = micros() - time2;
if (diff2 > 1600)
sensores += 3;
//------------------------
pinMode( linha3, OUTPUT );
digitalWrite( linha3, HIGH );
delayMicroseconds(10);
pinMode( linha3, INPUT );
long time3 = micros();
while (digitalRead(linha3) == HIGH && micros() - time3 < 3000);
int diff3 = micros() - time3;
if (diff3 > 1600)
sensores += 10;
//-----------------------------
pinMode( linha4, OUTPUT );
digitalWrite( linha4, HIGH );
delayMicroseconds(10);
pinMode( linha4, INPUT );
long time4 = micros();
while (digitalRead(linha4) == HIGH && micros() - time4 < 3000);
int diff4 = micros() - time4;
if (diff4 > 1600)
sensores += 10;
//----------------------
pinMode( linha5, OUTPUT );
digitalWrite( linha5, HIGH );
delayMicroseconds(10);
pinMode( linha5, INPUT );
long time5 = micros();
while (digitalRead(linha5) == HIGH && micros() - time5 < 3000);
int diff5 = micros() - time5;
if (diff5 > 1600)
sensores += 5;
//--------------------------
pinMode( linha6, OUTPUT );
digitalWrite( linha6, HIGH );
delayMicroseconds(10);
pinMode( linha6, INPUT );
long time6 = micros();
while (digitalRead(linha6) == HIGH && micros() - time6 < 3000);
int diff6 = micros() - time6;
if (diff6 > 1600)
sensores += 7;
return sensores;
}
Vou fazer uma breve explicação do codigo para tentar deixa-lo mais claro:
No meu codigo estabeleço um valor para cada um dos 6 sensores, pela soma total dos valores consigo localizar a posição da linha
os valores que estabeleci são:
sensor1 = 1
sensor2 = 3
sensor3 = 10
sensor4 = 10
sensor5= 5
sensor6 = 7
o valor de posição ideal é 20 quando a linha esta no centro do robo sobre os sensores 3 e 4.
Desta forma a cada valor de posição poso escolher a ação dos motores para corrigi-lo, ex: o valor total deu 15 isto indica que a linha esta sobre os sensores 4 (valor 10) e sobre o sensor 4 (valor 5) então a linha esta mais a direita do centro