10 de dezembro de 2011

Medidor de luminosidade

Essa nossa experiência científica é um medidor de luminosidade.


Percebam que quanto mais a sombra se aproxima, mais LEDs vão acendendo. Quando a barra acusar falta de luminosidade, o LED branco acende.


Um LDR (resistor variável de acordo com a luz) para calcular a luminosidade. Seis LEDs para formar a barra de informação, e um LED branco para representar a luz que deve ser acionada.
O valor máximo e mínimo do LDR deve ser calibrado de acordo com o ambiente.

Segue o esquema elétrico e o código fonte:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*--------------------------
 - MEDIDOR DE LUMINOSIDADE -
 Fellipe Couto - 10/12/2011
 --------------------------*/
int Led[] = {2,3,4,5,6,7,8};  //Pinos dos LEDs
int qtdLed = 7;    //Numero de LEDs
int LDR = 0;       //Pino ligado o LDR (Analogico 0)
int ValorLDR = 0;
int ldrMax = 740;  //Valor maximo do LDR
int ldrMin = 600;  //Valor minimo do LDR
int dif = (ldrMax - ldrMin) / qtdLed;

void setup(){
  for (int i=0; i<qtdLed; i++){ //Configura os pinos dos leds como saída.
    pinMode(Led[i],OUTPUT);
  }
}

void loop() {
  ValorLDR = analogRead(LDR); //Valor do LDR.
  
  for (int i=0; i<qtdLed; i++){
    if (i<2){
      //LED 1
      if (ValorLDR < ldrMax){
        digitalWrite(Led[i],HIGH);
      }
      else{
        digitalWrite(Led[i],LOW);
      }
      //LED 2
      if (ValorLDR < ldrMax - dif){
        digitalWrite(Led[1],HIGH);
      }
      else{
        digitalWrite(Led[1],LOW);
      }
    }
    else{
      //Demais LEDs
      if (ValorLDR < ldrMax - (dif*i)){
        digitalWrite(Led[i],HIGH);
      }
      else{
        digitalWrite(Led[i],LOW);
      }
    }
  }
}

Um comentário:

  1. Cara vi um projeto parecido em outro site mas o código era muito maior. Muito bom! Espero os proximos posts.

    ResponderExcluir