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
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.
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.
Arduino Forum > International > Portugues > [RESOLVIDO]Sensor 18b20 Temperatura e Código
arduino
Comments
Post a Comment