0% found this document useful (0 votes)
63 views

Multiple Dallas Arduino

This code is setting up a OneWire bus to communicate with Dallas Temperature sensors. It locates the connected sensors, assigns addresses to each, sets the temperature resolution, and prints out the temperature readings in a loop. Key steps include initializing the OneWire library, starting the DallasTemperature library, finding addresses of devices, setting the resolution, and calling requestTemperatures() and printing the temperature for each device.

Uploaded by

gprodan2002a2948
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views

Multiple Dallas Arduino

This code is setting up a OneWire bus to communicate with Dallas Temperature sensors. It locates the connected sensors, assigns addresses to each, sets the temperature resolution, and prints out the temperature readings in a loop. Key steps include initializing the OneWire library, starting the DallasTemperature library, finding addresses of devices, setting the resolution, and calling requestTemperatures() and printing the temperature for each device.

Uploaded by

gprodan2002a2948
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

// Include the libraries we need

#include <OneWire.h>

#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino

#define ONE_WIRE_BUS 2

#define TEMPERATURE_PRECISION 9

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas
temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);

// arrays to hold device addresses

DeviceAddress termo[5];

// Assign address manually. The addresses below will beed to be changed

// to valid device addresses on your bus. Device address can be retrieved

// by using either oneWire.search(deviceAddress) or individually via

// sensors.getAddress(deviceAddress, index)

// DeviceAddress insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };

// DeviceAddress outsideThermometer = { 0x28, 0x3F, 0x1C, 0x31, 0x2, 0x0, 0x0, 0x2 };

void setup(void)

// start serial port

Serial.begin(9600);

Serial.println("Dallas Temperature IC Control Library Demo");


// Start up the library

sensors.begin();

// locate devices on the bus

Serial.print("Locating devices...");

Serial.print("Found ");

Serial.print(sensors.getDeviceCount(), DEC);

Serial.println(" devices.");

// report parasite power requirements

Serial.print("Parasite power is: ");

if (sensors.isParasitePowerMode()) Serial.println("ON");

else Serial.println("OFF");

// Search for devices on the bus and assign based on an index. Ideally,

// you would do this to initially discover addresses on the bus and then

// use those addresses and manually assign them (see above) once you know

// the devices on your bus (and assuming they don't change).

//

// method 1: by index

if (!sensors.getAddress(termo[0], 0)) Serial.println("Unable to find address for Device 0");

if (!sensors.getAddress(termo[1], 1)) Serial.println("Unable to find address for Device 1");

if (!sensors.getAddress(termo[2], 2)) Serial.println("Unable to find address for Device 2");

if (!sensors.getAddress(termo[3], 3)) Serial.println("Unable to find address for Device 3");

if (!sensors.getAddress(termo[4], 4)) Serial.println("Unable to find address for Device 4");

// method 2: search()

// search() looks for the next device. Returns 1 if a new address has been

// returned. A zero might mean that the bus is shorted, there are no devices,

// or you have already retrieved all of them. It might be a good idea to

// check the CRC to make sure you didn't get garbage. The order is
// deterministic. You will always get the same devices in the same order

//

// Must be called before search()

//oneWire.reset_search();

// assigns the first address found to insideThermometer

//if (!oneWire.search(insideThermometer)) Serial.println("Unable to find address for


insideThermometer");

// assigns the seconds address found to outsideThermometer

//if (!oneWire.search(outsideThermometer)) Serial.println("Unable to find address for


outsideThermometer");

// show the addresses we found on the bus

for(int i = 0; i < 5; i++){

Serial.print("Device");

Serial.print(i);

Serial.print("Address: ");

printAddress(termo[i]);

Serial.println();

// set the resolution to 9 bit per device

for(int i = 0; i < 5; i++){

sensors.setResolution(termo[i], TEMPERATURE_PRECISION);

for(int i = 0; i < 5; i++){

Serial.print("Device");

Serial.print(i);

Serial.print("Resolution: ");

Serial.print(sensors.getResolution(termo[i]), DEC);

Serial.println();

}
// function to print a device address

void printAddress(DeviceAddress deviceAddress)

for (uint8_t i = 0; i < 8; i++)

// zero pad the address if necessary

if (deviceAddress[i] < 16) Serial.print("0");

Serial.print(deviceAddress[i], HEX);

// function to print the temperature for a device

void printTemperature(DeviceAddress deviceAddress)

float tempC = sensors.getTempC(deviceAddress);

Serial.print("Temp C: ");

Serial.print(tempC);

Serial.print(" Temp F: ");

Serial.print(DallasTemperature::toFahrenheit(tempC));

// function to print a device's resolution

void printResolution(DeviceAddress deviceAddress)

Serial.print("Resolution: ");

Serial.print(sensors.getResolution(deviceAddress));

Serial.println();

// main function to print information about a device


void printData(DeviceAddress deviceAddress)

Serial.print("Device Address: ");

printAddress(deviceAddress);

Serial.print(" ");

printTemperature(deviceAddress);

Serial.println();

/*

Main function, calls the temperatures in a loop.

*/

void loop(void)

// call sensors.requestTemperatures() to issue a global temperature

// request to all devices on the bus

Serial.print("Requesting temperatures...");

sensors.requestTemperatures();

Serial.println("DONE");

// print the device information

for(int i = 0; i < 5; i++){

printData(termo[i]);

delay(500);

analogWrite(50);

You might also like