Esse e o programa que pretendo usar, mas ele está meio instável... quando ele vai mover o servo da vertical ele não fica sempre apontado pro lugar de maior intensidade, fica para baixo... Já dei umas modificadas, mas não faço ideia do que fazer!!! Se puderem olhar e me dizer se tem algo errado, fico agradecido!!!
#include <Servo.h>
Servo servo1; //Declara servos
Servo servo2;
int pos1 = 0; // pos1 é a posião horizontal
int pos2 = 0; // pos2 é a posição vertical
int right = 0; // LDR direita
int left = 0; // LDR esquerda
int up = 0; // LDR superior
int down = 0; //LDR inferior
int ldr1 = 0; // pinos dos LDRs
int ldr2 = 1;
int ldr3 = 2;
int ldr4 = 3;
void setup()
{
servo1.attach(10); //anexar servo 1 ao pino digital 10
servo1.write(90); //posição inicial de 90 graus
servo2.attach(9); // anexar o servo 2 ao pino digital 9
servo2.write(90); // posição inicial de 90 graus
pinMode(ldr1, INPUT); //Declara LDRs como entradas
pinMode(ldr2, INPUT);
pinMode(ldr3, INPUT);
pinMode(ldr4, INPUT);
}
void loop()
{
pos1 = servo1.read(); // pos1 informa a posição atual do servo1 (horizontal)
pos2 = servo2.read(); // pos2 informa a posição atual do servo2 (vertical)
// Leitura de cada LDR
int right = analogRead(ldr1); // LDR1 é o da direita
int left = analogRead(ldr2); //LDR2 é o da esquerda
int up = analogRead(ldr3); //LDR3 é o superior
int down = analogRead(ldr4); //LDR4 é o inferior
//Controle da posição horizontal
if(right > left ) // Se tem mais luz no LDR da direita do que no da esquerda, move-se para a direita
{
servo1.write(pos1 +1); //Aumenta a posição do servo em 1
delay(10); // este atraso é necessário para evitar servo de ir 0-180 sem parar
}
else if(left > right) //Move-se para esquerda, pois existe mais intensidade
{
servo1.write(pos1 -1); // Diminui a posição do servo em 1
delay(10);
}
else
{
servo1.write(pos1); // Caso nenhuma condição seja satisfeita, se mantem a mesma posição
}
//Posição do controle Vertica
if(up > down)
{
servo2.write(pos2 +1);
delay(10);
}
else if(down > up)
{
servo2.write(pos2 -1);
delay(10);
}
else
{
servo2.write(pos2);
}
}