-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMeTemperature.cpp
More file actions
49 lines (46 loc) · 1.42 KB
/
Copy pathMeTemperature.cpp
File metadata and controls
49 lines (46 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "MeTemperature.h"
// DS18B20 commands
#define STARTCONVO 0x44 // Tells device to take a temperature reading and put it on the scratchpad
#define COPYSCRATCH 0x48 // Copy EEPROM
#define READSCRATCH 0xBE // Read EEPROM
#define WRITESCRATCH 0x4E // Write to EEPROM
#define RECALLSCRATCH 0xB8 // Reload from last known
#define READPOWERSUPPLY 0xB4 // Determine if device needs parasite power
#define ALARMSEARCH 0xEC // Query bus for devices with an alarm condition
MeTemperature::MeTemperature():MePort(){
}
MeTemperature::MeTemperature(MEPORT port):MePort(port){
}
MeTemperature::MeTemperature(uint8_t pin){
_ts.reset(pin);
}
MeTemperature::MeTemperature(MEPORT port,uint8_t slot):MePort(port){
MePort::reset(port, slot);
_ts.reset( slot == SLOT_2 ? s2 : s1);
}
void MeTemperature::reset(uint8_t port,uint8_t slot){
MePort::reset(port, slot);
_ts.reset( slot == SLOT_2 ? s2 : s1);
}
float MeTemperature::temperature(){
byte i;
byte present = 0;
// byte type_s;
byte data[12];
// byte addr[8];
// float celsius;
long time;
_ts.reset();
_ts.skip();
_ts.write(STARTCONVO); // start conversion, with parasite power on at the end
time = millis();
while(!_ts.readIO() && (millis()-time)<750);
present = _ts.reset();
_ts.skip();
_ts.write(READSCRATCH);
for ( i = 0; i < 5; i++) { // we need 9 bytes
data[i] = _ts.read();
}
int16_t rawTemperature = (data[1] << 8) | data[0];
return (float)rawTemperature * 0.0625;// 12 bit
}