• Welcome to LusoRobótica - Robótica em Português.
 

Temperature Analyser

Started by GnGz, 21 de February de 2011, 21:10

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

GnGz

Em principio ele lê dessas maneiras?

Para a int é dificil ? :


Int temp = 18
Int dev = 48

Serial.print = temp
Serial.print = "."
Serial.print = dev


senso

Os teus posts sao sempre semi-enigmaticos GnGz..
Mas efectivamente estas a ler uma temperatura em que?
O arduino como tem funçoes overloaded se lhe enfiares com um int para o serial ele manda dois bytes sem tu veres isso.
Avr fanboy

andre_f_carvalho

boas,


acho o que ele esta a querer dizer no enviar a temperatura, é como se usar-mos picaxe, lemos o valor do sensor e com os calculos normais na programação definimos o valor final numa memoria (exemplo "b0" no caso de usar picaxe) e depois utiliza-se o comando debug (usado para verificar os valores que estao a ser usados nas memorias "b" e ou "w" no microcontrolador) e assim se obtem os valores da temperatura, no caso de enviar por serial utiliza-se um outro comando, que não sei como se chama :P e assim da para o que ele quer fazer no programa..

cump

GnGz

Sim , envias para o pc normalmente ..


Código para o Arduino:
Quote
#include <Wire.h>
#define address 0x4F // A0|A1|A2 a High
#define baudrate 9600

void setup() {
  Wire.begin(); // I2C Arranque
  Serial.begin(9600); // Serial Arranque
}

void loop(){
  // Configuração do ds1631+
  Wire.beginTransmission(address); //Inicio
  Wire.send(0xAC); // Configuração
  Wire.send(B00001111); // POL | 12 bit | OneShot
  Wire.endTransmission(); //Fim
  delay(10); // Delay necessária

  // Conversão da Temperatura
  Wire.beginTransmission(address); 
  Wire.send(0x51);
  Wire.endTransmission(); 
  delay(10);

  // Espera que a conversão esteja acabada
  byte conf = 0;
  while ( conf & B1000000 != B10000000 ) {
    delay( 100 );
    Wire.beginTransmission(address); 
    Wire.send(0xAC); 
    Wire.endTransmission();
    conf = Wire.receive();
  }

  // Pedir a Temperatura
  Wire.beginTransmission(address); 
  Wire.send(0xAA); 
  Wire.endTransmission();

  Wire.requestFrom(address, 2); // Pedir 2bytes


  int temp = Wire.receive();
  // read second byte
  int frac = Wire.receive();
  
  if (temp == 0) {Serial.println("Erro");} else{
  
  Serial.print(temp);
  Serial.print( "." );

  frac = 100 * (frac & 0xF0 )/ 256;
  if ( frac < 10 ) {
    Serial.print("0");
  }
  Serial.print( frac );

  delay(1000);

  }

  
 
}