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.