[RESOLVIDO]Sensor 18b20 Temperatura e Código


olá pessoal, estou engatinhando em arduinod ainda.

peguei esse código para o sensor 18b20 na internet, mas nao consigo entender pq nao funciona como esperado


code: [select]

#include <wire.h>
#include <onewire.h>
#include <liquidcrystal_i2c.h>

#define ds18s20_id 0x10
#define ds18b20_id 0x28

liquidcrystal_i2c lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, positive);

onewire ds(2);

float tempatual;
float gettemp() {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  float tempatual;
  //encontrando o sensor
  if (!ds.search(addr)) {
    ds.reset_search();
    delay(250);
    return false;
  }
  if (onewire::crc8( addr, 7) != addr[7]) {
    return false;
  }
  if (addr[0] != ds18s20_id && addr[0] != ds18b20_id) {
    return false;
  }
  ds.reset();
  ds.select(addr);
  // iniciar conversa
  ds.write(0x44, 1);
  // aguardando um tempo para conexão...
  delay(850);
  present = ds.reset();
  ds.select(addr);
  // envia o comando de leitura
  ds.write(0xbe);
  // recebe 9 bytes
  ( = 0; < 9; i++) {
    data[i] = ds.read();
  }
  // calcular temperature |  0.0625 transforma o valor sensor em graus celsius
  //tempatual = ( (data[1] << 8) + data[0] ) * 0.0625;
 
  unsigned int raw = (data[1]<<8)|data[0];
  tempatual = (float)raw/16.0;
serial.print(tempatual);   
  return true;
}

void setup()
{

lcd.begin (20, 4);
serial.begin(9600);
}

void loop() {
float tempatual(gettemp());


serial.print (tempatual);


}




no primeiro serial.print(tempatual) antes "setup()";  temperatura sai correta no monitor

dentro "loop()" mesmo chamando o "gettemp()"; sai temperatura 0.00 e 1.00

não estou conseguindo entender o motivo.

tu queres isto:

code: [select]
float tempatual = gettemp();


Arduino Forum > International > Portugues > [RESOLVIDO]Sensor 18b20 Temperatura e Código


arduino

Comments