Created
November 7, 2014 21:40
-
-
Save harrisonhjones/f68a0cf41a64f56cd84c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This #include statement was automatically added by the Spark IDE. | |
#include "OneWire/OneWire.h" | |
// This #include statement was automatically added by the Spark IDE. | |
#include "spark-dallas-temperature/spark-dallas-temperature.h" | |
// Data wire is plugged into port 2 on the Arduino | |
#define ONE_WIRE_BUS D3 | |
#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 insideThermometer, outsideThermometer; | |
// 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(); | |
} | |
/* | |
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"); | |
// 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) | |
//insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 }; | |
//outsideThermometer = { 0x28, 0x3F, 0x1C, 0x31, 0x2, 0x0, 0x0, 0x2 }; | |
// 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(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); | |
if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); | |
// 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 | |
Serial.print("Device 0 Address: "); | |
printAddress(insideThermometer); | |
Serial.println(); | |
Serial.print("Device 1 Address: "); | |
printAddress(outsideThermometer); | |
Serial.println(); | |
// set the resolution to 9 bit | |
sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION); | |
sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION); | |
Serial.print("Device 0 Resolution: "); | |
Serial.print(sensors.getResolution(insideThermometer), DEC); | |
Serial.println(); | |
Serial.print("Device 1 Resolution: "); | |
Serial.print(sensors.getResolution(outsideThermometer), DEC); | |
Serial.println(); | |
} | |
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 | |
printData(insideThermometer); | |
printData(outsideThermometer); | |
} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Compiler Error Message: