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 ");
Tags:
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..
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..
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por