Read iButton ds1922 temperature from Arduino

Hello everybody,
I'm trying to read temperature data from iButton ds1922 , using the onewire library.
I have some problem 'cause i cannot read the exact value from the address.
does anyone had the same problem?

In attachment I put my code to check if it is ok:

#include <OneWire.h>

**OneWire ds(12); // **

void setup(void) { **
** Serial.begin(9600);

** }**

void loop(void) {
** byte i;**
** byte present = 0;**
** byte data[12];**
** byte addr[8];**
** float celsius;**


//searching if the ibutton is connected
** ds.reset_search();**
** if ( !ds.search(addr)) {**
** Serial.print("No more addresses.\n");**
** ds.reset_search();**
** return;**
** }**


//checking crc
** if ( OneWire::crc8( addr, 7) != addr[7]) {**
** Serial.print("CRC is not valid!\n");**
** return; **
** } **


//taking readings
**//first stage is to convert the data by selecting the reg 33 **

** ds.reset();**
** ds.select(addr);**
** ds.write(0x44,1); // start conversion, with parasite power on at the end**
** //giving enough time for the conversion **
** delay(1000); **


//second stage is to read from scratchpad of the address 0f **
** ds.reset();

** ds.select(addr); **
** ds.write(0xAA); // Read Scratchpad**




//fitching and printing data
** Serial.print("d = ");**
** for ( i = 0; i < 9; i++) { // we need 9 bytes**
** data[i] = ds.read();**
** Serial.print(data[i],HEX);**
** Serial.print(" ");}**

Serial.print('\n');

** celsius = (((float)data[1] / 2.0f) - 41.0f) + ((float)data[0] / 512.0f);**
** Serial.print("16 bit Celu= ");**
** Serial.print(celsius);**



** Serial.print(" CRC=");**
** Serial.print( OneWire::crc8( data,7), HEX);**
** Serial.println();}**

Best,
nicole

Where did ALL the "*" come from?
Paul

I copied from Arduino IDE; should I modified it?

Did it compile with no errors?
Paul

yes!
this is what i get:

dt = 0 2 128 73 84 17 37 6 33
16 bit Celu= -40.00 CRC=7

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.