This is a thermometer using DS1820. With DS1820 library of Michael Hagberg, I just used most of the sample cords. Please see notebook [http://mbed.org/users/jf1vrr/notebook/ds1820-thermometer/].
main.cpp@0:5f5b4e506d94, 2011-04-28 (annotated)
- Committer:
- jf1vrr
- Date:
- Thu Apr 28 08:18:58 2011 +0000
- Revision:
- 0:5f5b4e506d94
Rev. 0.01A 2011/04/28 New
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jf1vrr | 0:5f5b4e506d94 | 1 | /* This is a thermometer using DS1820. With DS1820 library |
jf1vrr | 0:5f5b4e506d94 | 2 | of Michael Hagberg, I just used most of the sample cords. |
jf1vrr | 0:5f5b4e506d94 | 3 | Please see notebook [http://mbed.org/users/jf1vrr/notebook/ds1820-thermometer/]. |
jf1vrr | 0:5f5b4e506d94 | 4 | */ |
jf1vrr | 0:5f5b4e506d94 | 5 | #include "mbed.h" |
jf1vrr | 0:5f5b4e506d94 | 6 | #include "TextLCD.h" |
jf1vrr | 0:5f5b4e506d94 | 7 | #include "DS1820.h" |
jf1vrr | 0:5f5b4e506d94 | 8 | |
jf1vrr | 0:5f5b4e506d94 | 9 | TextLCD lcd(p24, p26, p27, p28, p29, p30); |
jf1vrr | 0:5f5b4e506d94 | 10 | |
jf1vrr | 0:5f5b4e506d94 | 11 | const int MAX_PROBES = 1; |
jf1vrr | 0:5f5b4e506d94 | 12 | DS1820* probe[MAX_PROBES]; |
jf1vrr | 0:5f5b4e506d94 | 13 | |
jf1vrr | 0:5f5b4e506d94 | 14 | int main() { |
jf1vrr | 0:5f5b4e506d94 | 15 | int i; |
jf1vrr | 0:5f5b4e506d94 | 16 | int devices_found=0; |
jf1vrr | 0:5f5b4e506d94 | 17 | // Initialize the probe array to DS1820 objects |
jf1vrr | 0:5f5b4e506d94 | 18 | for (i = 0; i < MAX_PROBES; i++) |
jf1vrr | 0:5f5b4e506d94 | 19 | probe[i] = new DS1820(p19); |
jf1vrr | 0:5f5b4e506d94 | 20 | // Initialize global state variables |
jf1vrr | 0:5f5b4e506d94 | 21 | probe[0]->search_ROM_setup(); |
jf1vrr | 0:5f5b4e506d94 | 22 | // Loop to find all devices on the data line |
jf1vrr | 0:5f5b4e506d94 | 23 | while (probe[devices_found]->search_ROM() and devices_found<MAX_PROBES-1) |
jf1vrr | 0:5f5b4e506d94 | 24 | devices_found++; |
jf1vrr | 0:5f5b4e506d94 | 25 | // If maximum number of probes are found, |
jf1vrr | 0:5f5b4e506d94 | 26 | // bump the counter to include the last array entry |
jf1vrr | 0:5f5b4e506d94 | 27 | if (probe[devices_found]->ROM[0] != 0xFF) |
jf1vrr | 0:5f5b4e506d94 | 28 | devices_found++; |
jf1vrr | 0:5f5b4e506d94 | 29 | |
jf1vrr | 0:5f5b4e506d94 | 30 | lcd.cls(); |
jf1vrr | 0:5f5b4e506d94 | 31 | if (devices_found==0) |
jf1vrr | 0:5f5b4e506d94 | 32 | lcd.printf("No devices found"); |
jf1vrr | 0:5f5b4e506d94 | 33 | else { |
jf1vrr | 0:5f5b4e506d94 | 34 | lcd.printf("DS1820 Thermo" ); |
jf1vrr | 0:5f5b4e506d94 | 35 | while (true) { |
jf1vrr | 0:5f5b4e506d94 | 36 | probe[0]->convert_temperature(DS1820::all_devices); |
jf1vrr | 0:5f5b4e506d94 | 37 | lcd.locate(0,1); |
jf1vrr | 0:5f5b4e506d94 | 38 | for (i=0; i<devices_found; i++) { |
jf1vrr | 0:5f5b4e506d94 | 39 | lcd.printf("%4.1fc",probe[i]->temperature('c')); |
jf1vrr | 0:5f5b4e506d94 | 40 | } |
jf1vrr | 0:5f5b4e506d94 | 41 | } |
jf1vrr | 0:5f5b4e506d94 | 42 | } |
jf1vrr | 0:5f5b4e506d94 | 43 | } |