rongyu lou / Mbed OS CarPakingSystem_V13

Dependencies:   HCSR04new SSH1106-alan

Committer:
alanchip
Date:
Sun Sep 27 06:06:43 2020 +0000
Revision:
0:69272b5e3faf
Child:
2:1baa0bd2fde0
111

Who changed what in which revision?

UserRevisionLine numberNew 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 }