A robust and feature-complete Arduino library for Maxim Temperature Integrated Circuits.
- DS18B20
- DS18S20 (
⚠️ Known issues with this series) - DS1822
- DS1820
- MAX31820
- MAX31850
- Open Arduino IDE
- Go to Tools > Manage Libraries...
- Search for "DallasTemperature"
- Click Install
- Also install the required "OneWire" library by Paul Stoffregen using the same method
- Download the latest release from GitHub releases
- In Arduino IDE, go to Sketch > Include Library > Add .ZIP Library...
- Select the downloaded ZIP file
- Repeat steps 1-3 for the required "OneWire" library
-
Hardware Setup
- Connect a 4k7 kΩ pull-up resistor between the 1-Wire data line and 5V power. Note this applies to the Arduino platform, for ESP32 and 8266 you'll need to adjust the resistor value accordingly.
- For DS18B20: Ground pins 1 and 3 (the centre pin is the data line)
- For reliable readings, see pull-up requirements in the DS18B20 datasheet (page 7)
-
Code Example
#include <OneWire.h> #include <DallasTemperature.h> // Data wire is connected to GPIO 4 #define ONE_WIRE_BUS 4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print("Temperature: "); Serial.print(tempC); Serial.println("°C"); delay(1000); }
- Multiple sensors on the same bus
- Temperature conversion by address (
getTempC(address)
andgetTempF(address)
) - Asynchronous mode (added in v3.7.0)
- Configurable resolution
You can slim down the code by defining the following at the top of DallasTemperature.h:
#define REQUIRESNEW // Use if you want to minimise code size
#define REQUIRESALARMS // Use if you need alarm functionality
Visit our Wiki for detailed documentation.
If you want to contribute to the library development:
The project includes a development container configuration for VS Code that provides a consistent development environment.
-
Prerequisites
- Visual Studio Code
- Docker
- VS Code Remote - Containers extension
-
Development Commands Within the dev container, use:
arduino-build
- Compile the library and examplesarduino-test
- Run the test suitearduino-build-test
- Complete build and test process
Note: Currently compiling against arduino:avr:uno environment
- Original development by Miles Burton mail@milesburton.com
- Multiple sensor support by Tim Newsome nuisance@casualhacker.net
- Address-based temperature reading by Guil Barros [gfbarros@bappos.com]
- Async mode by Rob Tillaart [rob.tillaart@gmail.com]
MIT License | Copyright (c) 2025 Miles Burton
Full license text available in LICENSE file.