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+


1 Comment