Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DS1620_improved TextLCD_improved mbed-rtos mbed
main.cpp@5:ff77acf7d21d, 2015-12-13 (annotated)
- Committer:
- dzoni
- Date:
- Sun Dec 13 06:25:45 2015 +0000
- Revision:
- 5:ff77acf7d21d
- Parent:
- 2:c190b9b39089
- Child:
- 6:d1435e38c1b4
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dzoni | 0:75ede6a15252 | 1 | #include "mbed.h" |
dzoni | 5:ff77acf7d21d | 2 | #include "rtos.h" |
dzoni | 0:75ede6a15252 | 3 | #include "DS1620.h" |
dzoni | 0:75ede6a15252 | 4 | #include "TextLCD.h" |
dzoni | 0:75ede6a15252 | 5 | |
dzoni | 5:ff77acf7d21d | 6 | TextLCD lcd(PA_8, PA_7, PA_9, PA_1, PB_5, PA_10, TextLCD::LCD16x2); |
dzoni | 5:ff77acf7d21d | 7 | |
dzoni | 5:ff77acf7d21d | 8 | DS1620 ds1620Sensor(PB_4, PB_10, PB_3); |
dzoni | 0:75ede6a15252 | 9 | |
dzoni | 5:ff77acf7d21d | 10 | static float temperature = 0.0f; |
dzoni | 5:ff77acf7d21d | 11 | static uint32_t temp_raw = 0; |
dzoni | 5:ff77acf7d21d | 12 | static uint32_t uiCnt=0; |
dzoni | 5:ff77acf7d21d | 13 | static DigitalOut myled(LED1); |
dzoni | 0:75ede6a15252 | 14 | |
dzoni | 5:ff77acf7d21d | 15 | static void initDS1620Temp() { |
dzoni | 0:75ede6a15252 | 16 | ds1620Sensor.setSerialClockFrequency(freq500k); |
dzoni | 0:75ede6a15252 | 17 | if ((ds1620Sensor.readConfig() & 0x03) != 0x03) { |
dzoni | 0:75ede6a15252 | 18 | ds1620Sensor.writeConfig(0x03); |
dzoni | 0:75ede6a15252 | 19 | } |
dzoni | 5:ff77acf7d21d | 20 | } |
dzoni | 0:75ede6a15252 | 21 | |
dzoni | 5:ff77acf7d21d | 22 | void temp_thread(void const *args) { |
dzoni | 5:ff77acf7d21d | 23 | while (1) { |
dzoni | 0:75ede6a15252 | 24 | myled = myled ^ 1; |
dzoni | 5:ff77acf7d21d | 25 | ds1620Sensor.startConversion(); |
dzoni | 0:75ede6a15252 | 26 | |
dzoni | 0:75ede6a15252 | 27 | // Wait for conversion completion (Tconv = 750 ms typ) |
dzoni | 5:ff77acf7d21d | 28 | Thread::wait(750); |
dzoni | 0:75ede6a15252 | 29 | while (!(ds1620Sensor.readConfig() & 0x80)) |
dzoni | 5:ff77acf7d21d | 30 | Thread::wait(10); |
dzoni | 5:ff77acf7d21d | 31 | |
dzoni | 0:75ede6a15252 | 32 | temperature = ds1620Sensor.getHighResolutionTemperature(); |
dzoni | 5:ff77acf7d21d | 33 | temp_raw = ds1620Sensor.readTemperatureRaw(); |
dzoni | 5:ff77acf7d21d | 34 | } |
dzoni | 5:ff77acf7d21d | 35 | } |
dzoni | 5:ff77acf7d21d | 36 | |
dzoni | 5:ff77acf7d21d | 37 | void disp_thread(void const *args) { |
dzoni | 5:ff77acf7d21d | 38 | while (1) { |
dzoni | 0:75ede6a15252 | 39 | lcd.cls(); |
dzoni | 5:ff77acf7d21d | 40 | lcd.printf("Raw: %u", temp_raw); |
dzoni | 5:ff77acf7d21d | 41 | uiCnt += 2; |
dzoni | 0:75ede6a15252 | 42 | lcd.locate(0, 1); |
dzoni | 0:75ede6a15252 | 43 | lcd.printf("Float: %3.2f%cC", temperature, 0xdf); |
dzoni | 0:75ede6a15252 | 44 | |
dzoni | 5:ff77acf7d21d | 45 | Thread::wait(1900); |
dzoni | 0:75ede6a15252 | 46 | } |
dzoni | 0:75ede6a15252 | 47 | } |
dzoni | 5:ff77acf7d21d | 48 | |
dzoni | 5:ff77acf7d21d | 49 | int main() { |
dzoni | 5:ff77acf7d21d | 50 | |
dzoni | 5:ff77acf7d21d | 51 | Thread::wait(1000); |
dzoni | 5:ff77acf7d21d | 52 | |
dzoni | 5:ff77acf7d21d | 53 | initDS1620Temp(); |
dzoni | 5:ff77acf7d21d | 54 | |
dzoni | 5:ff77acf7d21d | 55 | Thread dispThread(disp_thread, NULL, osPriorityNormal); |
dzoni | 5:ff77acf7d21d | 56 | Thread tempThread(temp_thread, NULL, osPriorityNormal); |
dzoni | 5:ff77acf7d21d | 57 | |
dzoni | 5:ff77acf7d21d | 58 | Thread::wait(osWaitForever); |
dzoni | 5:ff77acf7d21d | 59 | } |
dzoni | 0:75ede6a15252 | 60 |