Teste em sensores LDR para movimentação de Micro servo

Olá, sou iniciante na programação com Arduino, estou montando um projeto de movimentação de uma placa fotovoltaica de forma automática, através do teste de 4 sensores LDR.

Os projetos que eu encontrei na internet são em sua maioria para movimentação da placa fotovoltaica em quatro posições, ou seja: Para cima e para baixo e da direita para esquerda, na maioria deles também com um sensor para cada posição.

O meu projeto consiste na movimentação somente para cima e para baixo, e ao invés de 1 sensor para cada posição vou utilizar 4 sensores encima de uma maquete de uma casa. A ideia é que os LDRs sejam testados e o motor servo posicione  a placa fotovoltaica de acordo com a posição do LDR com maior incidência  solar.

Gostaria de pedir uma ajuda, de como poderia estar fazendo o teste nestes sensores e de como poderia colocar uma pausa entre os testes para ele não fazer isso a todo instante, somente após um determinado período de tempo.

Estou utilizando para teste este código abaixo, o qual encontrei em um projeto na internet, porem ele trabalha somente com o teste de 2 sensores fica testando a todo momento.

Agradeço desde já a disposição de quem poder me ajudar!

#include <Servo.h>

Servo myservo;

int pos = 0; // Variable to store the servo position.
int inputPhotoLeft = 1; // Fotorresistencia pin analogico 0 de arduino
int inputPhotoRight = 0;// Fotorresistencia pin analogico 1 de arduino

int Left = 0; // Store readings from the photoresistors.
int Right = 0; // Store readings from the photoresistors.

void setup()
{
Serial.begin(9600);
myservo.attach(9); // Attach servo to pin 9.
}

void loop()
{
// Reads the values from the photoresistors to the Left and Right variables.
Left = analogRead(inputPhotoLeft);
Right = analogRead(inputPhotoRight);
Serial.println(Left);
Serial.println(Right);

// Checks if right is greater than left, if so move to right.
if (Left > (Right +20))
// +20 is the deadzone, so it wont jiggle back and forth.
{
if (pos < 179)
pos++;
myservo.write(pos);
}

// Checks if left is greater than right, if so move to left.
if (Right > (Left +20))
// +20 is the deadzone, so it wont jiggle back and forth.
{
if (pos > 1)
pos -= 1;
myservo.write(pos);
}

// Added some delay, increase or decrease if you want less or more speed.
delay(10);
}

Exibições: 235

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço