Ajustes nas Funções de Movimento
Antes de passar para tarefas mais complexas, fizemos pequenas mudanças nas funções esquerda() e direita().Criamos uma variável para controlar o tempo de giro para conseguir um ângulo de giro próximo de 90°. Esse tempo precisa ser ajustado de acordo com a carga das pilhas e potência dos motores utilizados. Também passamos para dentro das funções a instrução de parar após o tempo do giro, deixando o programa principal mais limpo e fácil de entender.
Segue abaixo a listagem do código alterado:
int velocidade;
int tempo_giro;
// Fazer giro para a esquerda.
// Usa variável tempo_giro, para um ângulo próximo a 90 graus.
void esquerda() {
direcao = 3;
acionar_motores();
delay(tempo_giro);
parar();
}
// Fazer giro para a direita.
void direita() {
direcao = 2;
acionar_motores();
delay(tempo_giro);
parar();
}
void setup() {
pinMode(2, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(A5, INPUT);
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
velocidade = 150;
tempo_giro = 270;
digitalWrite(2, LOW);
}
void loop() {
if (distancia() < 30) {
parar();
buzinar();
esquerda();
} else {
avancar();
}
if (tem_luz()) {
apagar_farol();
} else {
acender_farol();
}
delay(200);
}
Passar à Parte 7

Nenhum comentário:
Postar um comentário