Alguém poderia me fornecer um código que faça o teste em 4 Sensores LDR e posicione um motor servo conforme o que apresente a maior luminosidade. Obs.(O projeto vai ter somente um motor e vai somente fazer o movimento para cima e para baixo).
Tentei adaptar um código que eu encontrei na internet, porem não sei como poderia fazer o teste nos 4 sensores no mesmo if, nesse código abaixo testo somente 2 ldrs
#include <Servo.h>// Inclui biblioteca de servos
Servo servoRotacao;// Cria variaveis para controlar servos
int ldr01 = A2;// Ldr 01 pino 2
int ldr02 = A3;// Ldr 02 pino 3
int ldr03 = A0;// Ldr 03 pino 4
int ldr03 = A1;// Ldr 04 pino 5
int valRotacao = 90;// Posicao inicial dos servos
int val01; // Variaveis para pegar valor analogico dos pinos
int val02; // Variaveis para pegar valor analogico dos pinos
int val03; // Variaveis para pegar valor analogico dos pinos
int val04; // Variaveis para pegar valor analogico dos pinos
int delayMovimento= 100;// Tempo de delay dos servos
void setup()
{
servoRotacao.attach(10);// Atribui ao pino 6 o servo rotacao
}
void loop()
{
val01 = analogRead(ldr01); // Faz leitura analogica do ldr 01 de acordo com a incidencia de luz
val02 = analogRead(ldr02);// Faz leitura analogica do ldr 02 de acordo com a incidencia de luz
val03 = analogRead(ldr03);// Faz leitura analogica do ldr 03 de acordo com a incidencia de luz
val04 = analogRead(ldr04); // Faz leitura analogica do ldr 04 de acordo com a incidencia de luz
if (val01 - val02 > 2 || val01 - val02 < -2)
// Comparando os LDR's da 01 e 02 com threshold de "2" para evitar tremer os servos (jitter)
{
if (val01 > val02 && valRotacao > 0)
// Luz vindo da 01, prepara para virar servo para 02 (valor de travamento menor que 0)
{
valRotacao--;
// Decrementa variavel
}
if (val01> val02 && valRotacao < 180)
// Luz vindo da 02, prepara para virar servo para 02 (valor de travamento maior que 180)
{
valRotacao++;
// Incrementa variavel
}
}
servoRotacao.write(valRotacao);// Coloca a posicao do servo de acordo com valor calculado
delay(delayMovimento);// Espera o servo se mover até a posicao
}
Tags:
Quais valores dos outros LDRs deseja testar ?
Traduzindo :
if (val01 - val02 > 2 || val01 - val02 < -2)
valRotacao--
Se o valor do LDR1 menos o valor de LDR2 for maior do que 2 OU (OR) valor de LDR1 menos valor de LDR2 for menor do que 2 , decremente a Rotação
if (val01> val02 && valRotacao < 180)
valRotacao++;
Se o valor do LDR1 for maior do que valor de LDR2 E (AND) Rotação for menor do que 180, incremente Rotação
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por