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); } } } } |
Cara vi um projeto parecido em outro site mas o código era muito maior. Muito bom! Espero os proximos posts.
ResponderExcluir