![](/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
main.cpp
- Committer:
- hunter64288
- Date:
- 2021-01-17
- Revision:
- 14:526e0b503646
- Parent:
- 13:d21f6477ba19
- Child:
- 15:9c5fb6600570
File content as of revision 14:526e0b503646:
#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; Semaphore one_slot(1); //InterruptIn button(PA_0); Serial bluetooth(PA_9, PA_10); //Blueutooth Tx, Rx AnalogIn ain(PA_0); //Potentiometer Input DigitalOut led1(LED1); DigitalOut led2(LED2); LCD_DISCO_F429ZI lcd; //LCD Library Thread thread1; //threads Thread thread2; Thread thread3; Thread thread4; void voltage_function(void const *name) { lcd.Clear(LCD_COLOR_WHITE); lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"TASK1 RUNNING", CENTER_MODE); printf("Task1 Running\n\r"); led1 = !led1; float samples[10]; while(1) { one_slot.wait(); printf("%s acquires semaphore\n\r", (const char *)name); Thread::wait(1000); for(int i=0; i<10; i++) { //ain.set_reference_voltage(3.0); samples[i] = ain.read()*3; wait(0.001f); } bluetooth.printf("Results:\n"); for(int i=0; i<10; i++) { bluetooth.printf("%d = , %f\n", i, samples[i]); } printf("Displayed by %s\n\r", (const char *)name); Thread::wait(1000); one_slot.release(); printf("%s releases semaphore\n\r", (const char *)name); 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++); } }*/ /*void btn_int(){ one_slot.release(); }*/ /*void semaphore_test(void const *name) { while (true) { one_slot.wait(); printf("%s acquires semaphore\n\r", (const char *)name); Thread::wait(1000); one_slot.release(); printf("%s releases semaphore\n\r", (const char *)name); } }*/ int main() { printf("We are in main.\n\r"); thread1.set_priority(osPriorityHigh); thread2.set_priority(osPriorityNormal); //thread3.set_priority(osPriorityNormal); //thread4.set_priority(osPriorityLow); thread1.start(voltage_function, (void *)"Thread 1"); // Starting the processes thread2.start(voltage_function, (void *)"Thread 2"); //button.rise(&btn_int); //thread3.start(semaphore_test, (void *)"Thread 3"); //thread4.start(semaphore_test, (void *)"Thread 4"); thread1.join(); thread2.join(); thread3.join(); thread4.join(); //wait for threads to complete printf("The end of main.\n\r"); }