Reading serial from DS-2401 using arduino uno

Hi there,

I am trying to read out the serial number from the ds2401 using my arduino UNO. Only i’m not getting any results. I tried searching for answers on the internet but found nothing. I tried the following code i found online.

#include <OneWire.h>
OneWire ds(6);                    // OneWire bus on digital pin 6
void setup()
{
  Serial.begin (9600);
  delay(250);
}
void loop()
{
  byte i;           // This is for the for loops
  boolean present;  // device present varj
  byte data[8];     // container for the data from device
  byte crc_calc;    //calculated CRC
  byte crc_byte;    //actual CRC as sent by DS2401
  //1-Wire bus reset, needed to start operation on the bus,
  //returns a 1/TRUE if presence pulse detected
  present = ds.reset();
  if (present == TRUE)
  {
    Serial.println("---------- Device present ----------");
    ds.write(0x33);  //Send Read data command
    data[0] = ds.read();
    Serial.print("Family code: 0x");
    PrintTwoDigitHex (data[0], 1);
    Serial.print("Hex ROM data: ");
    for (i = 1; i <= 6; i++)
    {
      data[i] = ds.read(); //store each byte in different position in array
      PrintTwoDigitHex (data[i], 0);
      Serial.print(" ");
    }
    Serial.println();
    crc_byte = ds.read(); //read CRC, this is the last byte
    crc_calc = OneWire::crc8(data, 7); //calculate CRC of the data
    Serial.print("Calculated CRC: 0x");
    PrintTwoDigitHex (crc_calc, 1);
    Serial.print("Actual CRC: 0x");
    PrintTwoDigitHex (crc_byte, 1);
  }
  else //Nothing is connected in the bus
  {
    Serial.println("xxxxx Nothing connected xxxxx");
  }
  delay(3000);
}
void PrintTwoDigitHex (byte b, boolean newline)
{
  Serial.print(b/16, HEX);
  Serial.print(b%16, HEX);
  if (newline) Serial.println();
}

I connected the ds2401 to my arduino uno this way:
Picture how i connected it. (for some reason the img tags dont work with this type of url)

I hope someone can help me figure this out. :slight_smile:

Regards,

PS. i posted this in the general electronics section, but i think it belongs more here.

The picture shows that you are not supply power to the device. It's hard to get data from a device that is not powered.

PaulS: The picture shows that you are not supply power to the device. It's hard to get data from a device that is not powered.

I tried connecting it to power (5v), but the results were the same. Can you see any other problem that could cause that i get no result back? other then not connected to power?

Hi,
OPs picture
c79308fb9aab7a40c4bccf2adda7a620.png

Tom… :slight_smile:

Hi, This is the datasheet. http://datasheet.octopart.com/DS2401%2B-Dallas-Semiconductor-datasheet-9752448.pdf

The output is open drain, so you will need a 4k7 resistor from data line to 5V.

Tom... :)

TomGeorge: Hi, This is the datasheet. http://datasheet.octopart.com/DS2401%2B-Dallas-Semiconductor-datasheet-9752448.pdf

The output is open drain, so you will need a 4k7 resistor from data line to 5V.

Tom... :)

Thank you very very much Tom! :D

Seemed like i was missing that :) thanks again!