Ir ao conteúdo
  • Cadastre-se
andre graes

Leds com ldrs independentes

Recommended Posts

boa noite!

sou aluno de automação indutrial pelo SENAI e estou desenvolvendo um projeto de aula que consiste em um sistema no qual existem 3 LDRs e 4 LEDs. Três LEDs deverão responder de acordo com a incidência de iluminação do seu respectivo LDR e o 4o LED deverá responder de acordo com a média de leitura dos 3 LDRs, sempre no sistema quanto mais luz menos brilho e não simplesmente acende/apaga.

Bom, pesquisando pela internet, consegui fazer o sistema funcionar com um LED e um LDR, mas não consigo implementar mais LEDs/LDRs. Como sou bastante iniciante em programação, acredito que esteja sendo ingênuo na lógica do código.

 

O código que está funcionando para 1 LED e 1 LDR:

 


/*
***Arduino + LDR***
José Maria DVD
*/
int pinoLED = 9; // pino digital 9
int pinoLDR = 5; // pino analógico 5
int LDR = 0; // receberá o valor do LDR
int LED = 0; // valor do LED
void setup() {
Serial.begin(9600);
}
void loop(){
//O valor lido da porta será no intervalo (0 a 1023)
LDR = analogRead(pinoLDR);
//Mostra na serial
Serial.print("LDR = ");
Serial.println(LDR);
//Ajuste de valores para um melhor filtro
if(LDR > 600) LDR = 600;
else if(LDR < 100) LDR = 100;
//Tranforma uma escala de valores em outra (255 a 0).
LED = map(LDR, 100, 600, 255, 0);
analogWrite(pinoLED, LED);
delay(50);
}

 

o código para 2 LEDs e 2 LDRs que não funciona (o segundo LED não faz nada):

 

int pinoLED1 = 9; // pino digital 9
int pinoLED2 = 10;

int pinoLDR2 = 4;
int pinoLDR1 = 5; // pino analógico 5

int LDR1 = 0; // receberá o valor do LDR
int LDR2 = 0;

int LED1 = 0; // valor do LED
int LED2 = 0;

void setup() {
Serial.begin(9600);
}
void loop(){
//O valor lido da porta será no intervalo (0 a 1023)
LDR1 = analogRead(pinoLDR1);
LDR2 = analogRead(pinoLDR2);  
//Mostra na serial
Serial.print("LDR1 = ");
Serial.println(LDR1);
Serial.print("LDR2 = ");  
Serial.println(LDR2);  
//Ajuste de valores para um melhor filtro
if(LDR1 > 600) LDR1 = 600;
else if(LDR1 < 100) LDR1 = 100;
//Tranforma uma escala de valores em outra (255 a 0).
LED1 = map(LDR1, 100, 600, 255, 0);
analogWrite(pinoLED1, LED1);
delay(50);
  
if(LDR2 > 600) LDR2 = 600;
else if(LDR2 < 100) LDR2 = 100;
LED2 = map(LDR2, 100, 600, 255, 0);
analogWrite(pinoLED2, LED2);
delay(50);  
}

Em anexo envio os prints do circuito que montei pelo simulador.

 

Agradeço qualquer tipo de ajuda iluminatti.
 

Captura de tela de 2016-06-28 21-38-43.png

Captura de tela de 2016-06-28 21-55-44.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal. então o arduíno tem saídas analógicas. Bom, verifique no manual dele quais são. Quiçá a que queres ligar o led não a seja.

As alternativas são: graduar o brilho do led com pwm (pode ser por sw mesmo) ou usar alguns pinos e fazer com rede R2R.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×