mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
0.2.2 DS18B20_INT
This commit is contained in:
parent
1e993d995f
commit
7c34f6a280
@ -6,7 +6,7 @@ jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: arduino/arduino-lint-action@v1
|
||||
with:
|
||||
library-manager: update
|
||||
|
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.6
|
||||
|
@ -10,7 +10,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: json-syntax-check
|
||||
uses: limitusus/json-syntax-check@v1
|
||||
with:
|
||||
|
@ -6,11 +6,22 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
|
||||
## [0.2.2] - 2023-02-03
|
||||
- improve disconnect detection
|
||||
- add **isConnected(retries)**
|
||||
- change signature **bool setResolution(bits)** to see if device is still available.
|
||||
- update GitHub actions
|
||||
- update license 2023
|
||||
- add example DS18B20_performance.ino (start not complete)
|
||||
- add example DS18B20_two_sensor.ino
|
||||
- add example oneWireSearch.ino
|
||||
- update readme.md
|
||||
|
||||
|
||||
## [0.2.1] - 2022-11-02
|
||||
- add changelog.md
|
||||
- add rp2040 to build-CI
|
||||
|
||||
|
||||
## [0.2.0] - 2022-06-23
|
||||
- fix #10 getTempCentiC() (thanks negroKiordi)
|
||||
- fix reading sensor
|
||||
|
@ -1,13 +1,11 @@
|
||||
//
|
||||
// FILE: DS18B20_INT.cpp
|
||||
// AUTHOR: Rob.Tillaart@gmail.com
|
||||
// VERSION: 0.2.1
|
||||
// VERSION: 0.2.2
|
||||
// DATE: 2017-07-25
|
||||
// PUPROSE: library for DS18B20 temperature sensor - integer only.
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
// https://github.com/RobTillaart/DS18B20_RT
|
||||
//
|
||||
// HISTORY: see changelog.md
|
||||
|
||||
|
||||
#include "DS18B20_INT.h"
|
||||
@ -20,10 +18,10 @@
|
||||
|
||||
|
||||
// Device resolution
|
||||
#define TEMP_9_BIT 0x1F // 9 bit
|
||||
#define TEMP_10_BIT 0x3F // 10 bit
|
||||
#define TEMP_11_BIT 0x5F // 11 bit
|
||||
#define TEMP_12_BIT 0x7F // 12 bit
|
||||
#define TEMP_9_BIT 0x1F // 9 bit
|
||||
#define TEMP_10_BIT 0x3F // 10 bit
|
||||
#define TEMP_11_BIT 0x5F // 11 bit
|
||||
#define TEMP_12_BIT 0x7F // 12 bit
|
||||
|
||||
|
||||
DS18B20_INT::DS18B20_INT(OneWire* ow)
|
||||
@ -35,6 +33,17 @@ DS18B20_INT::DS18B20_INT(OneWire* ow)
|
||||
|
||||
|
||||
bool DS18B20_INT::begin(uint8_t retries)
|
||||
{
|
||||
isConnected(retries);
|
||||
if (_addressFound)
|
||||
{
|
||||
_setResolution();
|
||||
}
|
||||
return _addressFound;
|
||||
}
|
||||
|
||||
|
||||
bool DS18B20_INT::isConnected(uint8_t retries)
|
||||
{
|
||||
_addressFound = false;
|
||||
for (uint8_t rtr = retries; (rtr > 0) && (_addressFound == false); rtr--)
|
||||
@ -46,18 +55,6 @@ bool DS18B20_INT::begin(uint8_t retries)
|
||||
_addressFound = _deviceAddress[0] != 0x00 &&
|
||||
_oneWire->crc8(_deviceAddress, 7) == _deviceAddress[7];
|
||||
}
|
||||
|
||||
if (_addressFound)
|
||||
{
|
||||
_oneWire->reset();
|
||||
_oneWire->select(_deviceAddress);
|
||||
_oneWire->write(WRITESCRATCH);
|
||||
// two dummy values for LOW & HIGH ALARM
|
||||
_oneWire->write(0);
|
||||
_oneWire->write(100);
|
||||
_oneWire->write(_resolution); // lowest as we do only integer math.
|
||||
_oneWire->reset();
|
||||
}
|
||||
return _addressFound;
|
||||
}
|
||||
|
||||
@ -78,14 +75,21 @@ bool DS18B20_INT::isConversionComplete(void)
|
||||
|
||||
int16_t DS18B20_INT::getTempC(void)
|
||||
{
|
||||
if (isConnected(3) == false)
|
||||
{
|
||||
return DEVICE_DISCONNECTED;
|
||||
}
|
||||
int16_t rawTemperature = _readRaw();
|
||||
rawTemperature >>= 4;
|
||||
if (rawTemperature < -55) return DEVICE_DISCONNECTED;
|
||||
if (rawTemperature < -55)
|
||||
{
|
||||
return DEVICE_DISCONNECTED;
|
||||
}
|
||||
return rawTemperature;
|
||||
}
|
||||
|
||||
|
||||
bool DS18B20_INT::getAddress(uint8_t* buf)
|
||||
bool DS18B20_INT::getAddress(uint8_t* buf)
|
||||
{
|
||||
if (_addressFound)
|
||||
{
|
||||
@ -98,21 +102,16 @@ bool DS18B20_INT::getAddress(uint8_t* buf)
|
||||
}
|
||||
|
||||
|
||||
void DS18B20_INT::setResolution(uint8_t bits)
|
||||
bool DS18B20_INT::setResolution(uint8_t bits)
|
||||
{
|
||||
uint8_t newRes = 0;
|
||||
switch (bits)
|
||||
{
|
||||
case 12: newRes = TEMP_12_BIT; break;
|
||||
case 11: newRes = TEMP_11_BIT; break;
|
||||
case 10: newRes = TEMP_10_BIT; break;
|
||||
default: newRes = TEMP_9_BIT; break;
|
||||
}
|
||||
if (newRes != _resolution)
|
||||
{
|
||||
_resolution = newRes;
|
||||
begin();
|
||||
case 12: _resolution = TEMP_12_BIT; break;
|
||||
case 11: _resolution = TEMP_11_BIT; break;
|
||||
case 10: _resolution = TEMP_10_BIT; break;
|
||||
default: _resolution = TEMP_9_BIT; break;
|
||||
}
|
||||
return begin();
|
||||
}
|
||||
|
||||
|
||||
@ -131,12 +130,19 @@ uint8_t DS18B20_INT::getResolution()
|
||||
|
||||
int16_t DS18B20_INT::getTempCentiC(void)
|
||||
{
|
||||
if (isConnected(3) == false)
|
||||
{
|
||||
return DEVICE_DISCONNECTED;
|
||||
}
|
||||
int16_t rawTemperature = _readRaw();
|
||||
// rawTemperature = rawTemperature * 100 / 16;
|
||||
rawTemperature *= 25;
|
||||
rawTemperature >>= 2;
|
||||
// use at own risk.
|
||||
// if (rawTemperature < -5500) return DEVICE_DISCONNECTED * 100;
|
||||
// use at own risk. (not tested)
|
||||
if (rawTemperature < -5500)
|
||||
{
|
||||
return DEVICE_DISCONNECTED * 100;
|
||||
}
|
||||
return rawTemperature;
|
||||
}
|
||||
|
||||
@ -157,6 +163,22 @@ int16_t DS18B20_INT::_readRaw(void)
|
||||
}
|
||||
|
||||
|
||||
bool DS18B20_INT::_setResolution()
|
||||
{
|
||||
if (_addressFound)
|
||||
{
|
||||
_oneWire->reset();
|
||||
_oneWire->select(_deviceAddress);
|
||||
_oneWire->write(WRITESCRATCH);
|
||||
// two dummy values for LOW & HIGH ALARM
|
||||
_oneWire->write(0);
|
||||
_oneWire->write(100);
|
||||
// lowest as default as we do only integer math.
|
||||
_oneWire->write(_resolution);
|
||||
_oneWire->reset();
|
||||
}
|
||||
return _addressFound;
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// FILE: DS18B20_INT.h
|
||||
// AUTHOR: Rob.Tillaart@gmail.com
|
||||
// VERSION: 0.2.1
|
||||
// VERSION: 0.2.2
|
||||
// DATE: 2017-07-25
|
||||
// PUPROSE: Minimalistic library for DS18B20 temperature sensor
|
||||
// uses only integer math (no float to minimize footprint)
|
||||
@ -21,12 +21,12 @@
|
||||
//
|
||||
|
||||
|
||||
#define DS18B20_INT_LIB_VERSION (F("0.2.1"))
|
||||
#define DS18B20_INT_LIB_VERSION (F("0.2.2"))
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "OneWire.h"
|
||||
|
||||
// Error Code
|
||||
// Error Code
|
||||
#define DEVICE_DISCONNECTED -127
|
||||
|
||||
typedef uint8_t DeviceAddress[8];
|
||||
@ -37,13 +37,16 @@ class DS18B20_INT
|
||||
public:
|
||||
explicit DS18B20_INT(OneWire * ow);
|
||||
bool begin(uint8_t retries = 3);
|
||||
bool isConnected(uint8_t retries = 3);
|
||||
|
||||
void requestTemperatures(void);
|
||||
int16_t getTempC(void);
|
||||
bool isConversionComplete(void);
|
||||
bool getAddress(uint8_t* buf);
|
||||
|
||||
void setResolution(uint8_t bits = 9);
|
||||
uint8_t getResolution();
|
||||
bool setResolution(uint8_t bits = 9);
|
||||
uint8_t getResolution(); // returns cached value
|
||||
|
||||
int16_t getTempCentiC(void);
|
||||
|
||||
|
||||
@ -54,6 +57,7 @@ private:
|
||||
|
||||
uint8_t _resolution;
|
||||
int16_t _readRaw();
|
||||
bool _setResolution();
|
||||
};
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017-2022 Rob Tillaart
|
||||
Copyright (c) 2017-2023 Rob Tillaart
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -24,18 +24,31 @@ I'm a great fan of the above library however some time ago I needed to strip it
|
||||
to save a few dozen bytes. I reworked that minimalistic version into a library and I
|
||||
added a number of Arduino examples to help you get started.
|
||||
|
||||
This library is also related to - https://github.com/RobTillaart/DS18B20_RT
|
||||
|
||||
#### Related
|
||||
|
||||
This library is related to
|
||||
- https://github.com/RobTillaart/DS18B20_INT
|
||||
- https://github.com/RobTillaart/DS18B20_RT
|
||||
- https://github.com/milesburton/Arduino-Temperature-Control-Library
|
||||
|
||||
## Interface
|
||||
|
||||
```cpp
|
||||
#include "DS18B20_INT.h"
|
||||
```
|
||||
|
||||
#### Core
|
||||
|
||||
This DS18B20_INT library supports only the DS18B20, only one sensor per pin, no parasite
|
||||
mode, no Fahrenheit and no alarm functions. The only feature the class supports is
|
||||
the asynchronous reading of the temperature by means of three core functions:
|
||||
|
||||
- **DS18B20_INT(OneWire \*)** constructor needs a reference to OneWire object.
|
||||
- **bool begin(uint8_t retries = 3)** resets oneWire and set resolution to 9 bit.
|
||||
returns true if all is OK. there will be a number of retries to connect, default 3.
|
||||
- **bool begin(uint8_t retries = 3)** resets oneWire and set resolution default to 9 bit.
|
||||
Returns true if address / device is found and all is OK.
|
||||
There will be a number of retries to connect, default 3.
|
||||
- **bool isConnected()** Returns true if address / device is found.
|
||||
- **void requestTemperatures()** trigger temperature conversion.
|
||||
- **bool isConversionComplete()** check if conversion is complete.
|
||||
- **int16_t getTempC()** returns temperature in whole degrees only. -55..125
|
||||
@ -43,20 +56,22 @@ or -127 = DEVICE_DISCONNECTED
|
||||
- **bool getAddress()** returns true if the sensor is configured (available).
|
||||
|
||||
|
||||
### CentiC part
|
||||
#### CentiC part
|
||||
|
||||
The following functions are experimental since 0.2.0
|
||||
They allow to use a higher resolution while not using floats.
|
||||
This keeps the library small.
|
||||
|
||||
- **void setResolution(uint8_t bits = 9)** sets the internal resolution to 9, 10, 11 or 12 bits.
|
||||
- **bool setResolution(uint8_t bits = 9)** sets the internal resolution to 9, 10, 11 or 12 bits.
|
||||
Other numbers will be mapped on 9.
|
||||
This will affect the conversion time for a measurement.
|
||||
Internally it will call **begin()** to set the new resolution if needed.
|
||||
Internally it will call **begin()** to set the new resolution.
|
||||
Returns false if no address / device can be found.
|
||||
- **void getResolution()** returns the bits set, default 9.
|
||||
Convenience function.
|
||||
- **getTempCentiC(void)** returns the measured temperature times 100. -5500..12500
|
||||
So 10.62°C will be returned as 1062.
|
||||
Note one might need to set the resolution.
|
||||
|
||||
**Warning** The DEVICE_DISCONNECTED is not tested for, but is commented in the code.
|
||||
Use at own risk.
|
||||
@ -75,31 +90,47 @@ This library supports only one DS18B20 per Arduino/ MCU pin.
|
||||
// | o | 2 DATA
|
||||
// \ o | 3 VCC
|
||||
// \---+
|
||||
|
||||
```
|
||||
(always check datasheet)
|
||||
|
||||
Connect a pull-up resistor 4.7 KOhm between pin3 and pin2.
|
||||
When the wires are longer this resistor needs to be smaller.
|
||||
|
||||
|
||||
### Pull up resistor
|
||||
#### Pull up resistor
|
||||
|
||||
An **indicative** table for pull up resistors, (E12 series), to get started.
|
||||
|
||||
Note: thicker wires require smaller resistors (typically 1 step in E12 series)
|
||||
|
||||
|
||||
| Length | - 5.0 Volt | - 3.3 Volt |
|
||||
|--------------:|------------:|-----------:|
|
||||
| 10cm (4") | 10K0 | 6K8 |
|
||||
| 20cm (8") | 8K2 | 4K7 |
|
||||
| 50cm (20") | 4K7 | 3K3 |
|
||||
| 100cm (3'4") | 3K3 | 2K2 |
|
||||
| 200cm (6'8") | 2K2 | 1K0 |
|
||||
| 500cm (16'8") | 1K0 | \* |
|
||||
| longer | \* | \* |
|
||||
| Length | 5.0 Volt | 3.3 Volt | Notes |
|
||||
|----------------:|------------:|-----------:|:--------|
|
||||
| 10cm (4") | 10K0 | 6K8 | might work without |
|
||||
| 20cm (8") | 8K2 | 4K7 |
|
||||
| 50cm (20") | 4K7 | 3K3 |
|
||||
| 100cm (3'4") | 3K3 | 2K2 |
|
||||
| 200cm (6'8") | 2K2 | 1K0 |
|
||||
| 500cm (16'8") | 1K0 | \* |
|
||||
| longer | \* | \* |
|
||||
|
||||
\* = no info, smaller
|
||||
\* = no info, smaller?
|
||||
|
||||
|
||||
## Performance
|
||||
|
||||
To elaborate connected state.
|
||||
|
||||
Tested on UNO, 16 MHz, time in microseconds.
|
||||
Measured with DS18B20_performance.ino
|
||||
|
||||
| function | not connected | connected |
|
||||
|:-----------------------|:---------------:|:-----------:|
|
||||
| begin | 920 | - |
|
||||
| getAddress | 4 | - |
|
||||
| requestTemperatures | 1276 | - |
|
||||
| isConversionComplete | 72 | - |
|
||||
| getTempC | 912 | - |
|
||||
|
||||
|
||||
## Credits
|
||||
@ -110,9 +141,24 @@ and all people who contributed to that lib.
|
||||
|
||||
## Future
|
||||
|
||||
#### Must
|
||||
|
||||
- elaborate performance connected state.
|
||||
|
||||
#### Should
|
||||
|
||||
- add examples
|
||||
- a multi sensor == multiple pins, no bus
|
||||
|
||||
#### Could
|
||||
|
||||
- add rounding for **getTempC()**.
|
||||
- now it truncates, so it can be 0.5°C off.
|
||||
- add "0.5" to raw and truncate
|
||||
- add "0.5" to raw and truncate improves only for 10 bits and higher.
|
||||
|
||||
#### Wont
|
||||
|
||||
- unit tests
|
||||
- get it working
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
// FILE: DS18B20_INT.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: Minimalistic demo
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
|
||||
#include "DS18B20_INT.h"
|
||||
@ -18,6 +19,9 @@ void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
|
||||
sensor.begin();
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
// FILE: DS18B20_INT_getTempCentiC.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: Minimalistic demo
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
|
||||
#include "DS18B20_INT.h"
|
||||
@ -18,6 +19,9 @@ void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
|
||||
sensor.begin();
|
||||
sensor.setResolution(12);
|
||||
Serial.println(sensor.getResolution());
|
||||
|
@ -2,7 +2,7 @@
|
||||
// FILE: DS18B20_getAddress.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: DS18B20 lib getAddress demo
|
||||
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
#include <OneWire.h>
|
||||
#include <DS18B20_INT.h>
|
||||
|
@ -2,6 +2,7 @@
|
||||
// FILE: DS18B20_minimum.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: most minimal sketch
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
//
|
||||
// WARNING: this sketch does not wait for isConversionComplete()
|
||||
// and therefore temperature read is probably incorrect
|
||||
@ -22,6 +23,8 @@ void setup(void)
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
|
||||
sensor.begin();
|
||||
}
|
||||
|
@ -0,0 +1,108 @@
|
||||
//
|
||||
// FILE: DS18B20_performance.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: DS18B20 lib getAddress demo
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
|
||||
#include <OneWire.h>
|
||||
#include <DS18B20_INT.h>
|
||||
|
||||
|
||||
#define ONE_WIRE_BUS 2
|
||||
|
||||
OneWire oneWire(ONE_WIRE_BUS);
|
||||
DS18B20_INT sensor(&oneWire);
|
||||
|
||||
DeviceAddress da;
|
||||
|
||||
uint32_t start, stop;
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
delay(10);
|
||||
|
||||
start = micros();
|
||||
bool b = sensor.getAddress(da);
|
||||
stop = micros();
|
||||
Serial.print("\ngetAddress: \t");
|
||||
Serial.println(b);
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
start = micros();
|
||||
sensor.begin();
|
||||
stop = micros();
|
||||
Serial.print("\nbegin: \t");
|
||||
Serial.println(b);
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
start = micros();
|
||||
b = sensor.getAddress(da);
|
||||
stop = micros();
|
||||
Serial.print("\ngetAddress: \t");
|
||||
Serial.println(b);
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
if (b == false)
|
||||
{
|
||||
Serial.println("No address found!");
|
||||
}
|
||||
|
||||
Serial.print("Address: ");
|
||||
for (uint8_t i = 0; i < 8; i++)
|
||||
{
|
||||
if (da[i] < 0x10) Serial.print('0');
|
||||
Serial.print(da[i], HEX);
|
||||
}
|
||||
Serial.println();
|
||||
delay(10);
|
||||
|
||||
start = micros();
|
||||
sensor.requestTemperatures();
|
||||
stop = micros();
|
||||
Serial.print("\nrequestTemperatures: \t");
|
||||
Serial.println();
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
delay(750);
|
||||
|
||||
start = micros();
|
||||
b = sensor.isConversionComplete();
|
||||
stop = micros();
|
||||
Serial.print("\nisConversionComplete: \t");
|
||||
Serial.println(b);
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
start = micros();
|
||||
int temp = sensor.getTempC();
|
||||
stop = micros();
|
||||
Serial.print("\ngetTempC: \t");
|
||||
Serial.println(temp);
|
||||
Serial.print("Time: \t");
|
||||
Serial.println(stop - start);
|
||||
delay(10);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
@ -2,6 +2,7 @@
|
||||
// FILE: DS18B20_simple.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: equivalent of DallasTemperature library Simple
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
|
||||
#include <OneWire.h>
|
||||
@ -21,7 +22,10 @@ void setup(void)
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
|
||||
sensor.begin();
|
||||
if (sensor.begin() == false)
|
||||
{
|
||||
Serial.println("not connected!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,59 @@
|
||||
//
|
||||
// FILE: DS18B20_INT_two_sensors.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: demo with two sensors (on two pins)
|
||||
// URL: https://github.com/RobTillaart/DS18B20_INT
|
||||
|
||||
|
||||
#include "DS18B20_INT.h"
|
||||
|
||||
// numbers chosen to match pin numbers.
|
||||
#define ONE_WIRE_BUS2 2
|
||||
#define ONE_WIRE_BUS3 3
|
||||
|
||||
OneWire oneWire2(ONE_WIRE_BUS2);
|
||||
OneWire oneWire3(ONE_WIRE_BUS3);
|
||||
|
||||
DS18B20_INT inside(&oneWire2);
|
||||
DS18B20_INT outside(&oneWire3);
|
||||
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DS18B20_INT_LIB_VERSION: ");
|
||||
Serial.println(DS18B20_INT_LIB_VERSION);
|
||||
|
||||
inside.begin();
|
||||
outside.begin();
|
||||
|
||||
// different resolution shows nicely the async behavior
|
||||
inside.setResolution(12);
|
||||
outside.setResolution(10);
|
||||
|
||||
// request initial read
|
||||
inside.requestTemperatures();
|
||||
outside.requestTemperatures();
|
||||
}
|
||||
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
// print the temperature when available and request a new read
|
||||
if (inside.isConversionComplete())
|
||||
{
|
||||
Serial.print("inside:\t");
|
||||
Serial.println(inside.getTempC());
|
||||
inside.requestTemperatures();
|
||||
}
|
||||
if (outside.isConversionComplete())
|
||||
{
|
||||
Serial.print("outside:\t\t");
|
||||
Serial.println(outside.getTempC());
|
||||
outside.requestTemperatures();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
@ -0,0 +1,69 @@
|
||||
//
|
||||
// FILE: oneWireSearch.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: scan for 1-Wire devices + code snippet generator
|
||||
// DATE: 2015-june-30
|
||||
// URL: http://forum.arduino.cc/index.php?topic=333923
|
||||
// URL: https://github.com/RobTillaart/DS18B20_RT
|
||||
//
|
||||
// inspired by http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
|
||||
|
||||
|
||||
|
||||
#include <OneWire.h>
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println("//\n// Start oneWireSearch.ino \n//");
|
||||
|
||||
for (uint8_t pin = 2; pin < 13; pin++)
|
||||
{
|
||||
findDevices(pin);
|
||||
}
|
||||
Serial.println("\n//\n// End oneWireSearch.ino \n//");
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
uint8_t findDevices(int pin)
|
||||
{
|
||||
OneWire ow(pin);
|
||||
|
||||
uint8_t address[8];
|
||||
uint8_t count = 0;
|
||||
|
||||
if (ow.search(address))
|
||||
{
|
||||
Serial.print("\nuint8_t pin");
|
||||
Serial.print(pin, DEC);
|
||||
Serial.println("[][8] = {");
|
||||
do {
|
||||
count++;
|
||||
Serial.println(" {");
|
||||
for (uint8_t i = 0; i < 8; i++)
|
||||
{
|
||||
Serial.print("0x");
|
||||
if (address[i] < 0x10) Serial.print("0");
|
||||
Serial.print(address[i], HEX);
|
||||
if (i < 7) Serial.print(", ");
|
||||
}
|
||||
Serial.println(" },");
|
||||
} while (ow.search(address));
|
||||
|
||||
Serial.println("};");
|
||||
Serial.print("// nr devices found: ");
|
||||
Serial.println(count);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
|
@ -18,6 +18,7 @@ getTempCentiC KEYWORD2
|
||||
|
||||
# Constants (LITERAL1)
|
||||
DS18B20_INT_LIB_VERSION LITERAL1
|
||||
|
||||
DEVICE_DISCONNECTED LITERAL1
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
"version": "^2.3.5"
|
||||
}
|
||||
],
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2",
|
||||
"license": "MIT",
|
||||
"frameworks": "arduino",
|
||||
"platforms": "*",
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=DS18B20_int
|
||||
version=0.2.1
|
||||
version=0.2.2
|
||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||
sentence=Library for DS18B20 restricted to a single sensor per pin.
|
||||
|
@ -40,6 +40,12 @@ unittest_teardown()
|
||||
}
|
||||
|
||||
|
||||
unittest(test_constants)
|
||||
{
|
||||
assertEqual(-127, DEVICE_DISCONNECTED);
|
||||
}
|
||||
|
||||
|
||||
unittest(test_constructor)
|
||||
{
|
||||
OneWire oneWire(4);
|
||||
|
Loading…
Reference in New Issue
Block a user