E ai galera, tudo bom?

Vi que ja temos alguns posts a respeito aqui no forum mais não consegui solucionar meu problema ainda, então vim pedir ajuda..

Estou tentando fazer um sisteminha de automação com 2 sensores:

1 sensor de temperatura LM35, que ja consigui faze-lo funcionar - quando a temperatura passa do limite que estipulei recebo um aviso pelo buzzer.

O segundo sensor é um LDR, onde minha intenção era medir em porcentagem a iluminação do ambiente, ou seja, quando o ambiente estiver muito claro  proximo 100% e quando muito escuro  proximo 0 %, mas não estou conseguindo transformar os valores lidos 0 - 1024 nesses valores..

Tenho duas duvidas:

Primeiro que o LDR trabalho ao inverso do que estou buscando.. quando o ambiente esta quase totalmente escuro o valor é proximo a 1024, e quanto quase totalmente claro proximo a 0.. Então preciso ''inverter'' esses valores, para que a informação seja de quanto claro e não quanto escuro, e depois converter esses valores em %.


Estou usando o seguindo codigo: 

void loop() 
{{
  //Lendo o valor do sensor de luz
  valorSensorLuz  = analogRead(sensorLuz);
  

  //Lendo o valor do sensor de temperatura. 
  valorSensorTemp = analogRead(sensorTemp);   

  //Transformando valor lido no sensor de temperatura em graus celsius aproximados.
   valorSensorTemp *= 0.54 ;

  delay(500);  //intervalo na leitura - meio segundo
 }   

  //Exibindo valor da leitura do sensor de temperatura no display LCD.
  lcd.clear();  //limpa o display do LCD.     
  lcd.print("Temp: ");  //imprime a string no display do LCD.                 
  lcd.print(valorSensorTemp);
  lcd.write(B11011111); //Simbolo de graus celsius
  lcd.print("C");

  //Exibindo valor da leitura do sensor de luz no display LCD.
  lcd.setCursor(0,1);  //posiciona o cursor na coluna 0 linha 1 do LCD.
  lcd.print("Luz: ");  //imprime a string no display do LCD.       
  lcd.print(valorSensorLuz); 
  lcd.print(" AQUI QUERIA A PORCENTAGEM ");

Exibições: 4455

Responder esta

Respostas a este tópico

Cara, usa um map(valorSensorLuz, 1023, 0, 0, 100) isso já resolve o seu problema e depois você só vai colocar o simbolo de porcentagem

Não entendi o codigo Leandro, sou novo no assunto então não manjo todas as funções..

O que o map significa ? 

De qualquer forma, obrigado desde ja! 

baixe esse tinha feito o mesmo faz muito tempo..

Anexos

Valeu pela ajuda Diego, vou tentar juntar meu projeto nesse seu codigo para ver se dar certo..

Só uma duvida, nessa caso, o valor que eu vou ter no serial será:

quanto mais escuro mais proximo de 100 % não é isso ? 

você sabe como eu faço para inverter isso, ou seja, quanto mais claro mais proximo de 100%.. 

Obrigado desde ja! Boa noite

Em resposta a minha propria pergunta, com auxilio de Leandro de Oliveira e Diego Paulino, descobri a solução, usei a função map que me forneceram e para transformar o valor lido ao inves de porcentagem de ''escuro'' em porcentagem de ''claro'' fiz a seguinte função: 

//Lendo o valor do sensor de luz
int luz = analogRead(0);
luz = map(-luz, 0, 1024, 0, 100) + (100);

O - luz indica que o valor é de iluminação negativa na minha interpretação e o + 100 corrige esse valor.

Valeu ae galera!! 

Cara, se apenas inverter o lado dos valores, inverte o lado da porcentagem (Já fiz isso e dá certo):

//Lendo o valor do sensor de luz
int luz = analogRead(0);
luz = map(luz, 1023, 0, 0, 100);

da uma olhada aki q vc vai entender http://arduino.cc/en/reference/map

e no código é de acordo com a luz incidente, qnto mas luz + próximo de 100%,assim como menos luz menor a %..

se é isso o que quer não precisa daquele mais "+100" 

simples assim..

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço