A RTOS,Thread test.

Dependencies:   DS1820

Committer:
mingjunxu
Date:
Wed Dec 06 12:35:56 2017 +0000
Revision:
0:15a8ce505cc7
RTOS Thread test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mingjunxu 0:15a8ce505cc7 1 #include "mbed.h"
mingjunxu 0:15a8ce505cc7 2 #include "rtos.h"
mingjunxu 0:15a8ce505cc7 3
mingjunxu 0:15a8ce505cc7 4 #include "DS1820.h"
mingjunxu 0:15a8ce505cc7 5 #define DATA_PIN D12
mingjunxu 0:15a8ce505cc7 6
mingjunxu 0:15a8ce505cc7 7 DS1820 probe(DATA_PIN); /*on the DATA_PIN (a 4.7K resistor tp VCC is necessary)*/
mingjunxu 0:15a8ce505cc7 8 DigitalOut led1(LED1);
mingjunxu 0:15a8ce505cc7 9
mingjunxu 0:15a8ce505cc7 10 void thread_print();
mingjunxu 0:15a8ce505cc7 11 void thread_led();
mingjunxu 0:15a8ce505cc7 12 void thread_ds1820();
mingjunxu 0:15a8ce505cc7 13
mingjunxu 0:15a8ce505cc7 14 Thread thread1,thread2,thread3;
mingjunxu 0:15a8ce505cc7 15 // main() runs in its own thread in the OS
mingjunxu 0:15a8ce505cc7 16 int main() {
mingjunxu 0:15a8ce505cc7 17 thread1.start(thread_print);
mingjunxu 0:15a8ce505cc7 18 thread2.start(thread_led);
mingjunxu 0:15a8ce505cc7 19 thread3.start(thread_ds1820);
mingjunxu 0:15a8ce505cc7 20 while(1)
mingjunxu 0:15a8ce505cc7 21 {
mingjunxu 0:15a8ce505cc7 22 printf("10 sec pass...\n");
mingjunxu 0:15a8ce505cc7 23 Thread::wait(10000);
mingjunxu 0:15a8ce505cc7 24 }
mingjunxu 0:15a8ce505cc7 25 }
mingjunxu 0:15a8ce505cc7 26
mingjunxu 0:15a8ce505cc7 27 void thread_print()
mingjunxu 0:15a8ce505cc7 28 {
mingjunxu 0:15a8ce505cc7 29 while(true){
mingjunxu 0:15a8ce505cc7 30 printf("Ich liebe dich!\n");
mingjunxu 0:15a8ce505cc7 31 Thread::wait(2000); //2000ms
mingjunxu 0:15a8ce505cc7 32 }
mingjunxu 0:15a8ce505cc7 33 }
mingjunxu 0:15a8ce505cc7 34
mingjunxu 0:15a8ce505cc7 35 void thread_led()
mingjunxu 0:15a8ce505cc7 36 {
mingjunxu 0:15a8ce505cc7 37 while (true) {
mingjunxu 0:15a8ce505cc7 38 led1 = !led1;
mingjunxu 0:15a8ce505cc7 39 Thread::wait(1000); //1000 ms
mingjunxu 0:15a8ce505cc7 40 }
mingjunxu 0:15a8ce505cc7 41 }
mingjunxu 0:15a8ce505cc7 42
mingjunxu 0:15a8ce505cc7 43 void thread_ds1820()
mingjunxu 0:15a8ce505cc7 44 {
mingjunxu 0:15a8ce505cc7 45 // Initialize the probe array to DS1820 objects
mingjunxu 0:15a8ce505cc7 46 DS1820::unassignedProbe(DATA_PIN);
mingjunxu 0:15a8ce505cc7 47 float celsius, fahrenheit;
mingjunxu 0:15a8ce505cc7 48
mingjunxu 0:15a8ce505cc7 49 printf("A simple DS1820 Test:\r\n");
mingjunxu 0:15a8ce505cc7 50 while(1) {
mingjunxu 0:15a8ce505cc7 51 probe.convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready
mingjunxu 0:15a8ce505cc7 52 celsius = probe.temperature();
mingjunxu 0:15a8ce505cc7 53 fahrenheit = celsius * 1.8f + 32.0f;
mingjunxu 0:15a8ce505cc7 54 printf("Temperture = %.1f celsius, %.1f fahrenheit.\r\n",celsius, fahrenheit);
mingjunxu 0:15a8ce505cc7 55 Thread::wait(1000);
mingjunxu 0:15a8ce505cc7 56 }
mingjunxu 0:15a8ce505cc7 57 }