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: HCSR04new SSH1106-alan
Diff: main.cpp
- Revision:
- 0:69272b5e3faf
- Child:
- 2:1baa0bd2fde0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Sep 27 06:06:43 2020 +0000 @@ -0,0 +1,197 @@ +/* mbed Microcontroller Library + * Copyright (c) 2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "mbed.h" +#include "platform/mbed_thread.h" +#include "HCSR04.h" + + +// Blinking rate in milliseconds +#define BLINKING_RATE_MS 1000 + +//Usensor time params +struct Usensor +{ + int dist; + int time_in_min; + int time_in_sec; + int time_out_min; + int time_out_sec; +}; + +Serial pc(USBTX, USBRX); //uart init +DigitalOut led(LED1); //LED init + +// RTC par +struct tm st_tmp; +struct tm *p_tm; +time_t seconds; + + +//Usensor struct +Usensor Usensor0; +Usensor Usensor1; + +/* +HCSR04_0 + PING: + Trig :D5 + Echo :D4 +*/ +DigitalOut trig0(D5); +DigitalIn echo0(D4); +Timer t ; +HCSR04 capteur0(&trig0, &echo0, &t); +/* +HCSR04_1 + PING: + Trig :D2 + Echo :D3 +*/ +DigitalOut trig1(D2); +DigitalIn echo1(D3); +Timer t1 ; +HCSR04 capteur1(&trig1, &echo1, &t1); + + +Thread init_start_thread; +Thread sensor_thread0; +Thread sensor_thread1; +Thread RTC_thread; +Thread sensor_capture_thread; + + + + + + +void RTC_INIT() +{ + st_tmp.tm_year = 2020-1900; + st_tmp.tm_mon = 9; + st_tmp.tm_mday = 27; + st_tmp.tm_hour = 1; + st_tmp.tm_min = 53; + st_tmp.tm_sec = 30; + + seconds = mktime(&st_tmp); + set_time(seconds); +} + +void RTC_display ()//display time printf +{ + seconds = time(NULL); + p_tm = localtime(&seconds); + //Display format year-month-day hour:min:sec + pc.printf("%04d-%02d-%04d %02d:%02d:%02d \n\n", p_tm->tm_year + 1900,p_tm->tm_mon,p_tm->tm_mday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec); +} + +void dist0_thread(void) +{ + while(true){ + //pc.printf("dist0 = %d \n\n", capteur0.measDist()); + Usensor0.dist = capteur0.measDist(); + thread_sleep_for(10); + } +} + +void dist1_thread(void) +{ + while(true){ + //pc.printf("dist1 = %d \n\n", capteur1.measDist()); + Usensor1.dist = capteur1.measDist(); + thread_sleep_for(10); + } +} + +void capture_sensor() +{ + while(true){ + //pc.printf("capture_sensor0 is working \n\n"); + if(Usensor0.dist < 10) + { + Usensor0.time_in_min = p_tm->tm_min; + Usensor0.time_in_sec = p_tm->tm_sec; + pc.printf("iiiiiiiiiiin-min-0 = %d \n\n", Usensor0.time_in_min); + pc.printf("iiiiiiiiiiin-sec-0 = %d \n\n", Usensor0.time_in_sec); + + //pc.printf("dist0-------------------------- = %d \n\n", Usensor0.dist); + + while(Usensor0.dist < 10) + { + thread_sleep_for(1); + } + + Usensor0.time_out_min = p_tm->tm_min; + Usensor0.time_out_sec = p_tm->tm_sec; + pc.printf("oooooooooout-min-0 = %d \n\n", Usensor0.time_out_min); + pc.printf("oooooooooout-sec-0 = %d \n\n", Usensor0.time_out_sec); + } + + if(Usensor1.dist < 10) + { + Usensor1.time_in_min = p_tm->tm_min; + Usensor1.time_in_sec = p_tm->tm_sec; + pc.printf("iiiiiiiiiiin-min-11111 = %d \n\n", Usensor1.time_in_min); + pc.printf("iiiiiiiiiiin-sec-11111 = %d \n\n", Usensor1.time_in_sec); + + //pc.printf("dist1-------------------------- = %d \n\n", Usensor1.dist); + + while(Usensor1.dist < 10) + { + thread_sleep_for(1); + } + + Usensor1.time_out_min = p_tm->tm_min; + Usensor1.time_out_sec = p_tm->tm_sec; + pc.printf("oooooooooout-min-11111111 = %d \n\n", Usensor1.time_out_min); + pc.printf("oooooooooout-sec-11111111 = %d \n\n", Usensor1.time_out_sec); + } + thread_sleep_for(10); + } + +} + + +void RTC_display_thread(void) +{ + while(true){ + RTC_display(); + thread_sleep_for(1000); + } +} + +void init_thread(void) +{ + while(true){ + RTC_INIT(); + init_start_thread.terminate();// thread gang up + } +} + + +int main() +{ + //init + init_start_thread.start(init_thread); + + //thread0 for Usensor0 + sensor_thread0.start(dist0_thread); + + sensor_capture_thread.start(capture_sensor); + + //thread1 for Usensor1 + sensor_thread1.start(dist1_thread); + + //thread for RTC + RTC_thread.start(RTC_display_thread); + + + while (true) + { + led = !led; + thread_sleep_for(BLINKING_RATE_MS); + } +}