Boa noite pessoal,

 

Eu preciso construir um robô seguidor de linha para um trabalho da faculdade, eu montei a estrutura abaixo está funcionando, só não consigo fazer ele seguir a linha direito, na primeira curva ele se perde. Quando seguro o carro ele faz as curvas corretamente.

 

Os sensores são 3 QRE1113, mas no momento estou usando no código apenas 2, o código abaixo foi o que escrevi, não sei se tem como melhorar para ter uma resposta mais rápida e o carrinho se manter sobre a linha branca. Se alguém puder dar alguma dica eu agradeço desde já.

 

int sensor_esq = A0;

int valor_esq;

int sensor_dir = A2;

int valor_dir;

int motor_esq_f = 2;

int motor_esq_t = 4;

int motor_dir_f = 7;

int motor_dir_t = 12;

int pwm_esq = 3;

int pwm_dir = 5;

void setup() {  

Serial.begin(9600);

pinMode(motor_esq_f, OUTPUT);

pinMode(motor_esq_t, OUTPUT);

pinMode(motor_dir_f, OUTPUT);

pinMode(motor_dir_t, OUTPUT);

delay(1500);

}

void loop() {

valor_esq = analogRead(sensor_esq);

//valor_cen = analogRead(sensor_cen);

valor_dir = analogRead(sensor_dir);

if(valor_esq>500&&valor_dir>500){

  digitalWrite(motor_esq_f, HIGH);  

digitalWrite(motor_dir_f, HIGH);  

analogWrite(pwm_esq, 70);  

analogWrite(pwm_dir, 80);

}

if(valor_esq<500){  

digitalWrite(motor_esq_f, LOW);  

digitalWrite(motor_dir_f, HIGH);  

analogWrite(pwm_esq, 0);  

analogWrite(pwm_dir, 100);

}

if(valor_dir<500){  

digitalWrite(motor_esq_f, HIGH);  

digitalWrite(motor_dir_f, LOW);  

analogWrite(pwm_esq, 90);  

analogWrite(pwm_dir, 0);

}

if (valor_esq<500&&valor_dir<500){  

digitalWrite(motor_esq_f, HIGH);  

digitalWrite(motor_dir_f, HIGH);  

analogWrite(pwm_esq, 90);  

analogWrite(pwm_dir, 100);

}

}

Exibições: 359

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

Dica simples, mas você não pode fazer o carrinho andar mais devagar, assim ele não se perderia nas curvas ?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço