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);
}
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por