#include <Servo.h> // Inclui a Biblioteca
Servo Horizontal; // Inicia o Servo da Horizontal
Servo Vertical; // Inicia o Servo da Vertical
int ServoHorizontal = 90; // Estabelece valor fixo à ServoHorizontal
int ServoVertical = 90; // Estabelece valor fixo à ServoVertical
int LimiteServoHorizontalMax = 180; // Estabele os limites de rotação
int LimiteServoHorizontalMin = 65; // Estabele os limites de rotação
int LimiteServoVerticalMax = 120; // Estabele os limites de rotação
int LimiteServoVerticalMin = 15; // Estabele os limites de rotação
int LDRDC = A0; // Inicia LDRDC no pino A0
int LDRDB = A1; // Inicia LDRDB no pino A1
int LDREC = A2; // Inicia LDREC no pino A2
int LDREB = A3; // Inicia LDREB no pino A3
void setup() {
Horizontal.attach(3); // Inicia servo Horizontal na porta D3
Vertical.attach(5); // Inicia servo Vertical na porta D5
Horizontal.write(180); // Inicia servo Horizontal na posição 180
Vertical.write(45); // Inicia servo Horizontal na posição 45
delay(3000); // Aguarda 3 segundos
}
void loop() {
int LDC = analogRead(LDRDC); // Leitura Analógica do LDR Direita Cima
int LEC = analogRead(LDREC); // Leitura Analógica do LDR Esquerda Cima
int LDB = analogRead(LDRDB); // Leitura Analógica do LDR Direita Baixo
int LEB = analogRead(LDREB); // Leitura Analógica do LDR Esquerda Baixo
int tol = 50;
int ValorSup = (LDC + LEC) / 2; // Média da leitura dos LDR superior
int ValorInf = (LDB + LEB) / 2; // Média da leitura dos LDR inferior
int ValorDir = (LDC + LDB) / 2; // Média da leitura dos LDR da direita
int ValorEsq = (LEC + LEB) / 2; // Média da leitura dos LDR da esquerda
int DifSupInf = ValorSup - ValorInf; // Diferença entre LED superior e inferior
int DifDirEsq = ValorDir - ValorEsq; // Diferença entre LED direita e esquerda
/*---------------------------------------------------*/
// Realiza a leitura e executa os movimentos referente ao Servo Vertical
if (-1 * tol > DifSupInf || DifSupInf > tol) {
if (ValorSup > ValorInf) {
ServoVertical = ++ServoVertical;
if (ServoVertical > LimiteServoVerticalMax) {
ServoVertical = LimiteServoVerticalMax;
}
}
else if (ValorSup < ValorInf) {
ServoVertical = --ServoVertical;
if (ServoVertical < LimiteServoVerticalMin) {
ServoVertical = LimiteServoVerticalMin;
}
}
Vertical.write(ServoVertical);
}
// Realiza a leitura e executa os movimentos referente ao Servo Horizontal
if (-1 * tol > DifDirEsq || DifDirEsq > tol) {
if (ValorDir > ValorEsq) {
ServoHorizontal = --ServoHorizontal;
if (ServoHorizontal < LimiteServoHorizontalMin) {
ServoHorizontal = LimiteServoHorizontalMin;
}
}
else if (ValorDir < ValorEsq) {
ServoHorizontal = ++ServoHorizontal;
if (ServoHorizontal > LimiteServoHorizontalMax) {
ServoHorizontal = LimiteServoHorizontalMax;
}
}
else if (ValorDir = ValorEsq) {
}
Horizontal.write(ServoHorizontal);
}
delay(100); // Aguarda 0,1 segundo
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ldr1:VCC
ldr1:GND
ldr1:DO
ldr1:AO
ldr2:VCC
ldr2:GND
ldr2:DO
ldr2:AO
ldr3:VCC
ldr3:GND
ldr3:DO
ldr3:AO
ldr4:VCC
ldr4:GND
ldr4:DO
ldr4:AO
servo1:GND
servo1:V+
servo1:PWM
servo2:GND
servo2:V+
servo2:PWM