Boas.
Para não estar a abrir um novo tópico e visto o meu caso ser também referente a um veiculo que segue uma linha, coloco aqui a questão para o meu caso.
Para reutilizar um pequeno veiculo que tinha feito há algum tempo, resolvi colocar no mesmo 2 LDR de forma a poder fazer com que o mesmo se move-se seguindo uma linha preta. Fica a imagem com o veiculo e o conceito que tenho para os 2 LDR.
Mas não consigo que o mesmo ande como pretendia. Não sei estarei a utilizar erradamente os 2LDR para o que pretendo ou se será no próprio código que deixo abaixo.
#include <Servo.h>
#define LEFTSERVOPIN 11
#define RIGHTSERVOPIN 13
Servo leftServo;
Servo rightServo;
int speed = 15; //velocidade de ambos os servos: percentagem entre 0 e 100
int pinLDRDir = 0; // pino analógico A0 direita
float LDRDir = 0; // receberá o valor do LDR da direita
int pinLDREsq = 2; // pino analógico A2 esquerda
float LDREsq = 0; // receberá o valor do LDR da esquerdaDR
void setup()
{
setSpeed(speed);
pinMode(LEFTSERVOPIN, OUTPUT);
pinMode(RIGHTSERVOPIN, OUTPUT);
leftServo.attach(LEFTSERVOPIN); //'attaches' esquerdo servo
rightServo.attach(RIGHTSERVOPIN); //'attaches' direito servo
vaiParado();
Serial.begin(9600);
}
void loop()
{
LDRDir = analogRead(pinLDRDir);
LDREsq = analogRead(pinLDREsq);
//Se 75% de LDREsq >= LDRDir - Vira a
if( LDREsq*0.75 >= LDRDir)
vaiEsquerda();
//Senão se 75% de LDRDir >= LDREsq - Vira a
else if( LDRDir*0.75 >= LDREsq)
vaiDireita();
else
vaiFrente();
}
//------------------------------------------------------------------------------------------------------------
//INICIALIZAÇÃO DOS SERVOS PELO ARDUINO - ROTINAS
/*
* define a velocidade do veiculo entre 0-(parado) e 100-(velocidade máxima)
*/
void setSpeed(int newSpeed){
if(newSpeed >= 100) {
newSpeed = 100;}
if(newSpeed <= 0) {
newSpeed = 0;}
speed = newSpeed * 0.9;
}
/* veiculo em frente */
void vaiFrente(){
leftServo.write(90 + speed);
rightServo.write(90 - speed);
}
/* veiculo para trás */
void vaiTras(){
leftServo.write(90 - speed);
rightServo.write(90 + speed);
}
/* veiculo para a direita */
void vaiDireita(){
leftServo.write(90 + speed);
rightServo.write(90 + speed);
}
/* veiculo para a esquerda */
void vaiEsquerda(){
leftServo.write(90 - speed);
rightServo.write(90 - speed);
}
/* veiculo parado */
void vaiParado(){
//leftServo.write(90);
//rightServo.write(90);
leftServo.write(0);
rightServo.write(0);
}
Agradeço todo e qualquer contributo que possam dar.