10 de dezembro de 2011

Medidor de luminosidade

Tarde, pessoal!
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:
/*--------------------------
 - 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);
      }
    }
  }
}

2 comentários:

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

    ResponderExcluir