Ir ao conteúdo
  • Cadastre-se

Leds com ldrs independentes


Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...