![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
A mbed RTOS based multimeter application that sends results to a phone over the Bluetooth module.
Dependencies: LCD_DISCO_F429ZI mbed mbed-rtos BSP_DISCO_F429ZI
Diff: main.cpp
- Revision:
- 12:441ee5b1cf71
- Parent:
- 11:0309bef74ba8
- Child:
- 13:d21f6477ba19
diff -r 0309bef74ba8 -r 441ee5b1cf71 main.cpp --- a/main.cpp Wed Feb 15 14:04:02 2017 -0600 +++ b/main.cpp Sun Jan 17 19:51:15 2021 +0000 @@ -1,22 +1,76 @@ #include "mbed.h" #include "rtos.h" - +#include "LCD_DISCO_F429ZI.h" +//#include <AnalogIn.h> + +//float message_t +//MemoryPool<message_t, 10> mpool; +//Queue<message_t, > queue; + +Serial bluetooth(PA_9, PA_10);//Tx, Rx +AnalogIn ain(PA_0); //potentiometer + DigitalOut led1(LED1); DigitalOut led2(LED2); -Thread thread; +//DigitalIn btn1(PA_0); //Button on your Nucleo Board + +LCD_DISCO_F429ZI lcd; +Thread thread1; //thread(osPriority osPriorityNormal) +Thread thread2; -void led2_thread() { - while (true) { - led2 = !led2; - Thread::wait(1000); +void thread1_function() { + lcd.Clear(LCD_COLOR_WHITE); + lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"TASK1 RUNNING", CENTER_MODE); + printf("Task1 Running\n\r"); + //DigitalOut led1(LED1); + //led1 = !led1; + + float samples[10]; + float volt_value[10]; +while(1) { + for(int i=0; i<10; i++) { + //ain.set_reference_voltage(3.0); + samples[i] = ain.read()*3; + //volt_value[i] = (((float)samples[i])/255.0)*3.0; + wait(0.001f); } + + bluetooth.printf("Results:\n"); + for(int i=0; i<10; i++) { + bluetooth.printf("%d = , %f\n", i, samples[i]); + } + Thread::wait(1000); +} +} +void thread2_function() { + lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"TASK2 RUNNING", CENTER_MODE); + printf("Task2 Running\n\r"); + + while(true) { + //float i=0; + //led2 = !led2; + bluetooth.printf("Hello World !\r\n"); + Thread::wait(1000); + //bluetooth.printf("This program runs since %f seconds.\r\n", i++); + + +} } int main() { - thread.start(led2_thread); + printf("We are in main.\n\r"); + + thread1.set_priority(osPriorityHigh); + thread2.set_priority(osPriorityNormal); + + thread1.start(thread1_function); // Starting the processes + thread2.start(thread2_function); - while (true) { - led1 = !led1; - Thread::wait(500); - } + thread1.join(); + thread2.join(); + + //wait for threads to complete + printf("The end of main.\n\r"); } + +