# Problemas com robô seguidor de linha. (ARDUINO)

**URL:** https://forum.fazedores.com/t/problemas-com-robo-seguidor-de-linha-arduino/5427
**Category:** Robótica
**Created:** [Maio 28, 2018, 6:58pm UTC](https://forum.fazedores.com/t/problemas-com-robo-seguidor-de-linha-arduino/5427 "2018-05-28T18:58:35Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Boechat](https://avatars.discourse-cdn.com/v4/letter/b/5f9b8f/32.png) [@Boechat](https://forum.fazedores.com/u/Boechat)
#### Post date: [Maio 28, 2018, 6:58pm UTC](https://forum.fazedores.com/t/problemas-com-robo-seguidor-de-linha-arduino/5427/1 "2018-05-28T18:58:35Z")

</div>

Há uns dois dias estou travado, tentando fazer o robô conseguir fazer a curva. Ele segue a linha direito, mas quando chega numa curva fechada ele praticamente a ignora e segue reto. A menos que seja colocado perto da mesma, porque nesse caso ele consegue fazer a curva. (Colocarei vídeos abaixo demonstrando melhor). Gostaria que alguém pudesse me ajudar ou dar qualquer dica, pois já tentei de tudo, variando velocidade e até a posição dos sensores. O código estará também abaixo:

#define DirEsq 7  
#define DirDir 4  
#define VelEsq 6  
#define VelDir 5  
#define s1 10  
#define s2 11  
#define s3 12  
#define s4 13

char Cor1,Cor2,Cor3,Cor4;

void Parar(){  
analogWrite(VelEsq,0);  
analogWrite(VelDir,0);  
}

void Frente(int Velocidade1,int Velocidade2){  
digitalWrite(DirEsq,HIGH);  
digitalWrite(DirDir,HIGH);  
analogWrite(VelEsq,Velocidade1);  
analogWrite(VelDir,Velocidade2);  
}

void Tras(int Velocidade1,int Velocidade2){  
digitalWrite(DirEsq,LOW);  
digitalWrite(DirDir,LOW);  
analogWrite(VelEsq,Velocidade1);  
analogWrite(VelDir,Velocidade2);  
}

void Esquerda(int Velocidade1,int Velocidade2){  
Tras(255,255);  
digitalWrite(DirEsq,LOW);  
digitalWrite(DirDir,HIGH);  
analogWrite(VelEsq,Velocidade1);  
analogWrite(VelDir,Velocidade2);  
}

void Direita(int Velocidade1,int Velocidade2){  
digitalWrite(DirEsq,HIGH);  
digitalWrite(DirDir,LOW);  
analogWrite(VelEsq,Velocidade1);  
analogWrite(VelDir,Velocidade2);  
}

void Ler(){  
if(digitalRead(s1) == 1)  
Cor1 = ‘P’;  
if(digitalRead(s1) == 0)  
Cor1 = ‘B’;  
if(digitalRead(s2) == 1)  
Cor2 = ‘P’;  
if(digitalRead(s2) == 0)  
Cor2 = ‘B’;  
if(digitalRead(s3) == 1)  
Cor3 = ‘P’;  
if(digitalRead(s3) == 0)  
Cor3 = ‘B’;  
if(digitalRead(s4) == 1)  
Cor4 = ‘P’;  
if(digitalRead(s4) == 0)  
Cor4 = ‘B’;  
}

void setup() {  
pinMode(DirEsq,OUTPUT);  
pinMode(DirDir,OUTPUT);  
pinMode(VelEsq,OUTPUT);  
pinMode(VelDir,OUTPUT);  
pinMode(s1,INPUT);  
pinMode(s2,INPUT);  
pinMode(s3,INPUT);  
pinMode(s4,INPUT);

digitalWrite(DirEsq,HIGH);  
digitalWrite(DirDir,HIGH);

delay(1000);  
}

void loop() {  
Ler();//ver o estado de cada sensor

```
Serial.print(Cor1);
Serial.print(" ");
Serial.print(Cor2);
Serial.print(" ");
Serial.print(Cor3);
Serial.print(" ");
Serial.println(Cor4);

if(digitalRead(s2) == 0 and digitalRead(s3) == 0){ //B B
  if(digitalRead(s1) == 1 and digitalRead(s4) == 0){
    Esquerda(255,255);
  }
  if(digitalRead(s1) == 0 and digitalRead(s4) == 1){
    Direita(255,255);
  }
  if(digitalRead(s1) == 0 and digitalRead(s4) == 0){
    Frente(70,70);
  }
  if(digitalRead(s1) == 1 and digitalRead(s4) == 1){
    Parar();
  }
}

if(digitalRead(s2) == 1 and digitalRead(s3) == 0){ //P B
  if(digitalRead(s1) == 1){
    Esquerda(255,255);
  }
  else{
    Frente(70,255);
  }
}

if(digitalRead(s2) == 0 and digitalRead(s3) == 1){ //B P
  if(digitalRead(s4) == 1){
    Direita(255,255);
  }
  else{
    Frente(255,70);
    
  }
}
if(digitalRead(s2) == 1 and digitalRead(s3) == 1){ //P P
  if(digitalRead(s1) == 1 and digitalRead(s4) == 0){
    Esquerda(255,255);
  }
  if(digitalRead(s1) == 0 and digitalRead(s4) == 1){
    Direita(255,255);
  }
  if(digitalRead(s1) == 0 and digitalRead(s4) == 0){
    Frente(70,70);
  }
  if(digitalRead(s1) == 1 and digitalRead(s4) == 1){
    Parar();
  }
}

```

}

---

<div class="post-metadata">

### Author: ![Boechat](https://avatars.discourse-cdn.com/v4/letter/b/5f9b8f/32.png) [@Boechat](https://forum.fazedores.com/u/Boechat)
#### Post date: [Maio 28, 2018, 7:03pm UTC](https://forum.fazedores.com/t/problemas-com-robo-seguidor-de-linha-arduino/5427/2 "2018-05-28T19:03:46Z")

</div>

os vídeos não estão carregando…

---

<div class="post-metadata">

### Author: ![Ewerton\_Leandro](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/ewerton_leandro/32/2323_2.png) [@Ewerton\_Leandro](https://forum.fazedores.com/u/Ewerton_Leandro)
#### Post date: [Junho 5, 2018, 1:27pm UTC](https://forum.fazedores.com/t/problemas-com-robo-seguidor-de-linha-arduino/5427/3 "2018-06-05T13:27:25Z")

</div>

Você será fazendo os testes dos sensores sem usar as cláusulas if-else, o que pode ocasionar caso a movimentação seja muito rápido entrando em duas cláusulas If.  
Faça um teste assim:  
If(digitalRead(s1)==1)  
Cor1 = 1;  
ELSE  
Cor1= 0;

…
