Seguidor de Luz

Introdução


Antes de ler este artigo deve ler o tutorial  que publicamos sobre a resistência LDR.

Só para relembrar:

LDR (do inglês Light Dependent Resistor), em português Resistência Dependente de Luz, ou Fotoresistência é um componente eletrónico passivo do tipo resistivo variável, ou seja, é uma resistência cujo valor varia em função da intensidade da luz que incide sobre o LDR. À medida que a intensidade da luz aumenta, a sua resistência diminui.

Os resultados típicos para um LDR poderão ser

Escuridão : resistência máxima, geralmente mega ohms.
Luz muito brilhante : resistência mínima, geralmente dezenas de ohms.

A leitura dos valores das resistências LDR faz-se através da utilização das portas analógicas do Arduíno.

Objetivo do trabalho


  • Acompanhar o movimento da luz através de 2 resistências LDR e com a utilização de um servomotor.
  • O movimento deve ser exemplificado como se trata-se do movimento do girassol.

Material necessário


  • 1 Arduíno Uno
  • 1 Breadborad
  • 2 Resistências LDR
  • 2 Resistências 10K
  • 1 Servomotor
  • Condutores de ligação

Esquema


Programa


/*  Clube de Robótica ESGC Alverca - 2018
 *  Responsavel Prof. Ramiro Martins
 *  Fazer uma maquete com um pequeno vaso de plástico e uma flor tipo girassol 
 *  O girassol é movido por um servo motor e gira para a direita ou esquerda em função da luz
 *  Este trabalho pode ser adaptado para o acompanhamento do movimento solar por um painel solar
 */

#include <Servo.h>

Servo myservo;

int pos = 0; // Variável para armazenar a posição do servo. 
int Ent_FR_Esq = 0; // Variavel da entrada analógico da fotoresistencia esquerda no pino 0 do arduino 
int Ent_FR_Dt = 1; // Variavel da entrada analógico da fotoresistencia direta no pino 0 do arduino 

int LFRESQ = 0; // Guarda as leituras da fotoresistencia esquerda. 
int LFRDT = 0; // Guarda as leituras da fotoresistencia direita. 

void setup () 
{ 
Serial.begin (9600 ); // inicialização da comunicação
myservo.attach (9); // Ligação do servo ao pino 9. 
}

void loop () 
{ 
// Lêem os valores das fotoresistencias da ​​esquerda e da direita. 
LFRESQ = analogRead (Ent_FR_Esq); 
LFRDT = analogRead (Ent_FR_Dt); 
Serial.println (LFRESQ); 
Serial.println (LFRDT);

// Verifica se a leitura da direita é maior que a da esquerda, se assim for, vai para a direita. 
if (LFRESQ> (LFRDT +20)) 
// +20 para compensar zonas mortas, para que não volte ao ponto anterior. 
{ 
if (pos <179) 
int pos = pos+1;
myservo.write (pos); 
}

// Verifica se a leitura da esquerda é maior que a da direita, se assim for, vai para a esquerda. 
if (LFRDT> (LFRESQ +20)) 
// +20 para compensar zonas mortas, para que não volte ao ponto anterior. 
{ 
if (pos> 1) 
int pos = pos-1; 
myservo.write (pos ); 
}

// Adicionado um valor de espera, pode aumentar-se ou diminuir-se a velocidade do servo. 
delay(20);
}


Continuação do projeto


O artigo do link descreve a aplicação desta ideia no “Projeto Girassol”  —> Ler+


 

Anúncios

1 Comment

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.