Bom dia
Estou fazendo uma automação residencial. E No meu codigo é so eu por o dht fazer uma leitura numa variavel float que o html nao carrega mais no codigo. Alguem consegue me ajudar a decifrar esse enigma
Segue codigo em anexo.
Tags:
Olá Eduardo!
O problema deve ser porque você está concatenando um float com uma String
Mude o trecho abaixo:
String humidade;
String Temp;
float t= dht.readTemperature();
Temp += t;
//float h = dht.readHumidity();
//humidade += h;
Para:
String humidade = "";
String Temp = "";
float t= dht.readTemperature();
Temp += String(t);
float h = dht.readHumidity();
humidade += String(h);
Nao foi josé Nao continua carregando o HTML Quando digito o ip 192.168.1.12 Se eu comentar os float para as leituras do dht funciona e o html é carregado
Mais um teste:
float t= dht.readTemperature();
String Temp = String(t);
float h = dht.readHumidity();
String humidade = String(h);
Se não der certo, vamos tentar outro comando.
Nao foi como proceder.
O problema está na conversão de float para String. Não estou com o Arduino agora para testar.
Como esses valores são inteiros, tente o seguinte:
int t= dht.readTemperature();
String Temp = String(t);
int h = dht.readHumidity();
String humidade = String(h);
Nada digitei 192.168.1.12 e o html nao carrega
se eu tirar o dht.readtemperature ou o dht.read humidade funciona show
Vamos tentar duas coisas:
Primeiro:
int t= (int) dht.readTemperature();
String Temp = String(t);
int h = (int) dht.readHumidity();
String humidade = String(h);
Se não ser certo, tente isso:
char auxt[15] = "";
String Temp = "";
dtostrf(dht.readTemperature(),9,5,auxt);
Temp += auxt;
char auxh[15] = "";
String humidade = "";
dtostrf(dht.readHumidity(),9,5,auxh);
humidade += auxh;
Nada o codigo nao carrega o html para eu ver a temp e etc e acionar os reles. o que nao inicia ali é o webserver que ta no arduino. se eu tirar tudo referente a dht funciona.
Na serial le 100% a temperatura e humidade 100%
Eduardo.
Não estou com o Arduino aqui agora. Mais tarde faço uns testes em casa e te falo.
Ok Jose Fico no aguardo
Eduardo, encontrei esse link na Internet mostrando como converter a temperatura do DHT11 para String:
https://www.openhomeautomation.net/weather-station-arduino/
No exemplo seria necessário criar uma função doubleToString, colocando esse código no final do INO:
//Rounds down (via intermediary integer conversion truncation)
String doubleToString(double input,int decimalPlaces){
if(decimalPlaces!=0){
String string = String((int)(input*pow(10,decimalPlaces)));
if(abs(input)<1){
if(input>0)
string = "0"+string;
else if(input<0)
string = string.substring(0,1)+"0"+string.substring(1);
}
return string.substring(0,string.length()-decimalPlaces)+"."+string.substring(string.length()-decimalPlaces);
}
else {
return String((int)input);
}
}
Logo depois altere seu código de leitura do DHT11 para:
h = dht.readHumidity();
t = dht.readTemperature();
String Temp = doubleToString(t, 2);
String humidade = doubleToString(h, 0);
É só fazer o seguinte:
Pega essa linha:
client.println("<font size=\"5\" face=\"verdana\" color=\"black\">Temperatura:"+Temp+"</font><br />");
faça imprimir cada parte de acordo com seu tipo, assim:
client.print("<font size=\"5\" face=\"verdana\" color=\"black\">Temperatura:");
client.print(Temp);
client.println("</font><br />");
no caso, substituir aquela primeira linha por essas três
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por