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.

Exibições: 666

Anexos

Responder esta

Respostas a este tópico

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço