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
main.cpp@0:69272b5e3faf, 2020-09-27 (annotated)
- Committer:
- alanchip
- Date:
- Sun Sep 27 06:06:43 2020 +0000
- Revision:
- 0:69272b5e3faf
- Child:
- 2:1baa0bd2fde0
111
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| alanchip | 0:69272b5e3faf | 1 | /* mbed Microcontroller Library |
| alanchip | 0:69272b5e3faf | 2 | * Copyright (c) 2019 ARM Limited |
| alanchip | 0:69272b5e3faf | 3 | * SPDX-License-Identifier: Apache-2.0 |
| alanchip | 0:69272b5e3faf | 4 | */ |
| alanchip | 0:69272b5e3faf | 5 | |
| alanchip | 0:69272b5e3faf | 6 | #include "mbed.h" |
| alanchip | 0:69272b5e3faf | 7 | #include "platform/mbed_thread.h" |
| alanchip | 0:69272b5e3faf | 8 | #include "HCSR04.h" |
| alanchip | 0:69272b5e3faf | 9 | |
| alanchip | 0:69272b5e3faf | 10 | |
| alanchip | 0:69272b5e3faf | 11 | // Blinking rate in milliseconds |
| alanchip | 0:69272b5e3faf | 12 | #define BLINKING_RATE_MS 1000 |
| alanchip | 0:69272b5e3faf | 13 | |
| alanchip | 0:69272b5e3faf | 14 | //Usensor time params |
| alanchip | 0:69272b5e3faf | 15 | struct Usensor |
| alanchip | 0:69272b5e3faf | 16 | { |
| alanchip | 0:69272b5e3faf | 17 | int dist; |
| alanchip | 0:69272b5e3faf | 18 | int time_in_min; |
| alanchip | 0:69272b5e3faf | 19 | int time_in_sec; |
| alanchip | 0:69272b5e3faf | 20 | int time_out_min; |
| alanchip | 0:69272b5e3faf | 21 | int time_out_sec; |
| alanchip | 0:69272b5e3faf | 22 | }; |
| alanchip | 0:69272b5e3faf | 23 | |
| alanchip | 0:69272b5e3faf | 24 | Serial pc(USBTX, USBRX); //uart init |
| alanchip | 0:69272b5e3faf | 25 | DigitalOut led(LED1); //LED init |
| alanchip | 0:69272b5e3faf | 26 | |
| alanchip | 0:69272b5e3faf | 27 | // RTC par |
| alanchip | 0:69272b5e3faf | 28 | struct tm st_tmp; |
| alanchip | 0:69272b5e3faf | 29 | struct tm *p_tm; |
| alanchip | 0:69272b5e3faf | 30 | time_t seconds; |
| alanchip | 0:69272b5e3faf | 31 | |
| alanchip | 0:69272b5e3faf | 32 | |
| alanchip | 0:69272b5e3faf | 33 | //Usensor struct |
| alanchip | 0:69272b5e3faf | 34 | Usensor Usensor0; |
| alanchip | 0:69272b5e3faf | 35 | Usensor Usensor1; |
| alanchip | 0:69272b5e3faf | 36 | |
| alanchip | 0:69272b5e3faf | 37 | /* |
| alanchip | 0:69272b5e3faf | 38 | HCSR04_0 |
| alanchip | 0:69272b5e3faf | 39 | PING: |
| alanchip | 0:69272b5e3faf | 40 | Trig :D5 |
| alanchip | 0:69272b5e3faf | 41 | Echo :D4 |
| alanchip | 0:69272b5e3faf | 42 | */ |
| alanchip | 0:69272b5e3faf | 43 | DigitalOut trig0(D5); |
| alanchip | 0:69272b5e3faf | 44 | DigitalIn echo0(D4); |
| alanchip | 0:69272b5e3faf | 45 | Timer t ; |
| alanchip | 0:69272b5e3faf | 46 | HCSR04 capteur0(&trig0, &echo0, &t); |
| alanchip | 0:69272b5e3faf | 47 | /* |
| alanchip | 0:69272b5e3faf | 48 | HCSR04_1 |
| alanchip | 0:69272b5e3faf | 49 | PING: |
| alanchip | 0:69272b5e3faf | 50 | Trig :D2 |
| alanchip | 0:69272b5e3faf | 51 | Echo :D3 |
| alanchip | 0:69272b5e3faf | 52 | */ |
| alanchip | 0:69272b5e3faf | 53 | DigitalOut trig1(D2); |
| alanchip | 0:69272b5e3faf | 54 | DigitalIn echo1(D3); |
| alanchip | 0:69272b5e3faf | 55 | Timer t1 ; |
| alanchip | 0:69272b5e3faf | 56 | HCSR04 capteur1(&trig1, &echo1, &t1); |
| alanchip | 0:69272b5e3faf | 57 | |
| alanchip | 0:69272b5e3faf | 58 | |
| alanchip | 0:69272b5e3faf | 59 | Thread init_start_thread; |
| alanchip | 0:69272b5e3faf | 60 | Thread sensor_thread0; |
| alanchip | 0:69272b5e3faf | 61 | Thread sensor_thread1; |
| alanchip | 0:69272b5e3faf | 62 | Thread RTC_thread; |
| alanchip | 0:69272b5e3faf | 63 | Thread sensor_capture_thread; |
| alanchip | 0:69272b5e3faf | 64 | |
| alanchip | 0:69272b5e3faf | 65 | |
| alanchip | 0:69272b5e3faf | 66 | |
| alanchip | 0:69272b5e3faf | 67 | |
| alanchip | 0:69272b5e3faf | 68 | |
| alanchip | 0:69272b5e3faf | 69 | |
| alanchip | 0:69272b5e3faf | 70 | void RTC_INIT() |
| alanchip | 0:69272b5e3faf | 71 | { |
| alanchip | 0:69272b5e3faf | 72 | st_tmp.tm_year = 2020-1900; |
| alanchip | 0:69272b5e3faf | 73 | st_tmp.tm_mon = 9; |
| alanchip | 0:69272b5e3faf | 74 | st_tmp.tm_mday = 27; |
| alanchip | 0:69272b5e3faf | 75 | st_tmp.tm_hour = 1; |
| alanchip | 0:69272b5e3faf | 76 | st_tmp.tm_min = 53; |
| alanchip | 0:69272b5e3faf | 77 | st_tmp.tm_sec = 30; |
| alanchip | 0:69272b5e3faf | 78 | |
| alanchip | 0:69272b5e3faf | 79 | seconds = mktime(&st_tmp); |
| alanchip | 0:69272b5e3faf | 80 | set_time(seconds); |
| alanchip | 0:69272b5e3faf | 81 | } |
| alanchip | 0:69272b5e3faf | 82 | |
| alanchip | 0:69272b5e3faf | 83 | void RTC_display ()//display time printf |
| alanchip | 0:69272b5e3faf | 84 | { |
| alanchip | 0:69272b5e3faf | 85 | seconds = time(NULL); |
| alanchip | 0:69272b5e3faf | 86 | p_tm = localtime(&seconds); |
| alanchip | 0:69272b5e3faf | 87 | //Display format year-month-day hour:min:sec |
| alanchip | 0:69272b5e3faf | 88 | 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); |
| alanchip | 0:69272b5e3faf | 89 | } |
| alanchip | 0:69272b5e3faf | 90 | |
| alanchip | 0:69272b5e3faf | 91 | void dist0_thread(void) |
| alanchip | 0:69272b5e3faf | 92 | { |
| alanchip | 0:69272b5e3faf | 93 | while(true){ |
| alanchip | 0:69272b5e3faf | 94 | //pc.printf("dist0 = %d \n\n", capteur0.measDist()); |
| alanchip | 0:69272b5e3faf | 95 | Usensor0.dist = capteur0.measDist(); |
| alanchip | 0:69272b5e3faf | 96 | thread_sleep_for(10); |
| alanchip | 0:69272b5e3faf | 97 | } |
| alanchip | 0:69272b5e3faf | 98 | } |
| alanchip | 0:69272b5e3faf | 99 | |
| alanchip | 0:69272b5e3faf | 100 | void dist1_thread(void) |
| alanchip | 0:69272b5e3faf | 101 | { |
| alanchip | 0:69272b5e3faf | 102 | while(true){ |
| alanchip | 0:69272b5e3faf | 103 | //pc.printf("dist1 = %d \n\n", capteur1.measDist()); |
| alanchip | 0:69272b5e3faf | 104 | Usensor1.dist = capteur1.measDist(); |
| alanchip | 0:69272b5e3faf | 105 | thread_sleep_for(10); |
| alanchip | 0:69272b5e3faf | 106 | } |
| alanchip | 0:69272b5e3faf | 107 | } |
| alanchip | 0:69272b5e3faf | 108 | |
| alanchip | 0:69272b5e3faf | 109 | void capture_sensor() |
| alanchip | 0:69272b5e3faf | 110 | { |
| alanchip | 0:69272b5e3faf | 111 | while(true){ |
| alanchip | 0:69272b5e3faf | 112 | //pc.printf("capture_sensor0 is working \n\n"); |
| alanchip | 0:69272b5e3faf | 113 | if(Usensor0.dist < 10) |
| alanchip | 0:69272b5e3faf | 114 | { |
| alanchip | 0:69272b5e3faf | 115 | Usensor0.time_in_min = p_tm->tm_min; |
| alanchip | 0:69272b5e3faf | 116 | Usensor0.time_in_sec = p_tm->tm_sec; |
| alanchip | 0:69272b5e3faf | 117 | pc.printf("iiiiiiiiiiin-min-0 = %d \n\n", Usensor0.time_in_min); |
| alanchip | 0:69272b5e3faf | 118 | pc.printf("iiiiiiiiiiin-sec-0 = %d \n\n", Usensor0.time_in_sec); |
| alanchip | 0:69272b5e3faf | 119 | |
| alanchip | 0:69272b5e3faf | 120 | //pc.printf("dist0-------------------------- = %d \n\n", Usensor0.dist); |
| alanchip | 0:69272b5e3faf | 121 | |
| alanchip | 0:69272b5e3faf | 122 | while(Usensor0.dist < 10) |
| alanchip | 0:69272b5e3faf | 123 | { |
| alanchip | 0:69272b5e3faf | 124 | thread_sleep_for(1); |
| alanchip | 0:69272b5e3faf | 125 | } |
| alanchip | 0:69272b5e3faf | 126 | |
| alanchip | 0:69272b5e3faf | 127 | Usensor0.time_out_min = p_tm->tm_min; |
| alanchip | 0:69272b5e3faf | 128 | Usensor0.time_out_sec = p_tm->tm_sec; |
| alanchip | 0:69272b5e3faf | 129 | pc.printf("oooooooooout-min-0 = %d \n\n", Usensor0.time_out_min); |
| alanchip | 0:69272b5e3faf | 130 | pc.printf("oooooooooout-sec-0 = %d \n\n", Usensor0.time_out_sec); |
| alanchip | 0:69272b5e3faf | 131 | } |
| alanchip | 0:69272b5e3faf | 132 | |
| alanchip | 0:69272b5e3faf | 133 | if(Usensor1.dist < 10) |
| alanchip | 0:69272b5e3faf | 134 | { |
| alanchip | 0:69272b5e3faf | 135 | Usensor1.time_in_min = p_tm->tm_min; |
| alanchip | 0:69272b5e3faf | 136 | Usensor1.time_in_sec = p_tm->tm_sec; |
| alanchip | 0:69272b5e3faf | 137 | pc.printf("iiiiiiiiiiin-min-11111 = %d \n\n", Usensor1.time_in_min); |
| alanchip | 0:69272b5e3faf | 138 | pc.printf("iiiiiiiiiiin-sec-11111 = %d \n\n", Usensor1.time_in_sec); |
| alanchip | 0:69272b5e3faf | 139 | |
| alanchip | 0:69272b5e3faf | 140 | //pc.printf("dist1-------------------------- = %d \n\n", Usensor1.dist); |
| alanchip | 0:69272b5e3faf | 141 | |
| alanchip | 0:69272b5e3faf | 142 | while(Usensor1.dist < 10) |
| alanchip | 0:69272b5e3faf | 143 | { |
| alanchip | 0:69272b5e3faf | 144 | thread_sleep_for(1); |
| alanchip | 0:69272b5e3faf | 145 | } |
| alanchip | 0:69272b5e3faf | 146 | |
| alanchip | 0:69272b5e3faf | 147 | Usensor1.time_out_min = p_tm->tm_min; |
| alanchip | 0:69272b5e3faf | 148 | Usensor1.time_out_sec = p_tm->tm_sec; |
| alanchip | 0:69272b5e3faf | 149 | pc.printf("oooooooooout-min-11111111 = %d \n\n", Usensor1.time_out_min); |
| alanchip | 0:69272b5e3faf | 150 | pc.printf("oooooooooout-sec-11111111 = %d \n\n", Usensor1.time_out_sec); |
| alanchip | 0:69272b5e3faf | 151 | } |
| alanchip | 0:69272b5e3faf | 152 | thread_sleep_for(10); |
| alanchip | 0:69272b5e3faf | 153 | } |
| alanchip | 0:69272b5e3faf | 154 | |
| alanchip | 0:69272b5e3faf | 155 | } |
| alanchip | 0:69272b5e3faf | 156 | |
| alanchip | 0:69272b5e3faf | 157 | |
| alanchip | 0:69272b5e3faf | 158 | void RTC_display_thread(void) |
| alanchip | 0:69272b5e3faf | 159 | { |
| alanchip | 0:69272b5e3faf | 160 | while(true){ |
| alanchip | 0:69272b5e3faf | 161 | RTC_display(); |
| alanchip | 0:69272b5e3faf | 162 | thread_sleep_for(1000); |
| alanchip | 0:69272b5e3faf | 163 | } |
| alanchip | 0:69272b5e3faf | 164 | } |
| alanchip | 0:69272b5e3faf | 165 | |
| alanchip | 0:69272b5e3faf | 166 | void init_thread(void) |
| alanchip | 0:69272b5e3faf | 167 | { |
| alanchip | 0:69272b5e3faf | 168 | while(true){ |
| alanchip | 0:69272b5e3faf | 169 | RTC_INIT(); |
| alanchip | 0:69272b5e3faf | 170 | init_start_thread.terminate();// thread gang up |
| alanchip | 0:69272b5e3faf | 171 | } |
| alanchip | 0:69272b5e3faf | 172 | } |
| alanchip | 0:69272b5e3faf | 173 | |
| alanchip | 0:69272b5e3faf | 174 | |
| alanchip | 0:69272b5e3faf | 175 | int main() |
| alanchip | 0:69272b5e3faf | 176 | { |
| alanchip | 0:69272b5e3faf | 177 | //init |
| alanchip | 0:69272b5e3faf | 178 | init_start_thread.start(init_thread); |
| alanchip | 0:69272b5e3faf | 179 | |
| alanchip | 0:69272b5e3faf | 180 | //thread0 for Usensor0 |
| alanchip | 0:69272b5e3faf | 181 | sensor_thread0.start(dist0_thread); |
| alanchip | 0:69272b5e3faf | 182 | |
| alanchip | 0:69272b5e3faf | 183 | sensor_capture_thread.start(capture_sensor); |
| alanchip | 0:69272b5e3faf | 184 | |
| alanchip | 0:69272b5e3faf | 185 | //thread1 for Usensor1 |
| alanchip | 0:69272b5e3faf | 186 | sensor_thread1.start(dist1_thread); |
| alanchip | 0:69272b5e3faf | 187 | |
| alanchip | 0:69272b5e3faf | 188 | //thread for RTC |
| alanchip | 0:69272b5e3faf | 189 | RTC_thread.start(RTC_display_thread); |
| alanchip | 0:69272b5e3faf | 190 | |
| alanchip | 0:69272b5e3faf | 191 | |
| alanchip | 0:69272b5e3faf | 192 | while (true) |
| alanchip | 0:69272b5e3faf | 193 | { |
| alanchip | 0:69272b5e3faf | 194 | led = !led; |
| alanchip | 0:69272b5e3faf | 195 | thread_sleep_for(BLINKING_RATE_MS); |
| alanchip | 0:69272b5e3faf | 196 | } |
| alanchip | 0:69272b5e3faf | 197 | } |