Embedded Systems Project Mateusz Loboda 200843098
Dependencies: N5110 SRF02-Mateusz mbed
main.h@3:ee005c9f0348, 2016-05-05 (annotated)
- Committer:
- el14ml
- Date:
- Thu May 05 09:54:30 2016 +0000
- Revision:
- 3:ee005c9f0348
- Parent:
- 2:0dfa60f22f07
final version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el14ml | 0:3403a3415306 | 1 | /** |
el14ml | 0:3403a3415306 | 2 | @file main.h |
el14ml | 0:3403a3415306 | 3 | @brief ʜeader file declares functions and variables |
el14ml | 2:0dfa60f22f07 | 4 | @brief Reverse parking and motion detection tool - Embedded Systems Project |
el14ml | 2:0dfa60f22f07 | 5 | @brief Revision 1.0. |
el14ml | 0:3403a3415306 | 6 | @author Mateusz Loboda |
el14ml | 0:3403a3415306 | 7 | @Date 02/05/16 |
el14ml | 0:3403a3415306 | 8 | */ |
el14ml | 0:3403a3415306 | 9 | |
el14ml | 3:ee005c9f0348 | 10 | |
el14ml | 0:3403a3415306 | 11 | #ifndef MAIN_H |
el14ml | 0:3403a3415306 | 12 | #define MAIN_H |
el14ml | 3:ee005c9f0348 | 13 | #include "mbed.h" |
el14ml | 0:3403a3415306 | 14 | #include "N5110.h" |
el14ml | 0:3403a3415306 | 15 | #include "SRF02.h" |
el14ml | 0:3403a3415306 | 16 | |
el14ml | 2:0dfa60f22f07 | 17 | /** |
el14ml | 2:0dfa60f22f07 | 18 | @namespace lcd |
el14ml | 3:ee005c9f0348 | 19 | @brief Object of the N5110 class |
el14ml | 2:0dfa60f22f07 | 20 | */ |
el14ml | 2:0dfa60f22f07 | 21 | N5110 lcd(PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3); |
el14ml | 0:3403a3415306 | 22 | |
el14ml | 3:ee005c9f0348 | 23 | /** |
el14ml | 3:ee005c9f0348 | 24 | @namespace sensor |
el14ml | 3:ee005c9f0348 | 25 | @brief Object of the SRF02 class |
el14ml | 3:ee005c9f0348 | 26 | */ |
el14ml | 0:3403a3415306 | 27 | SRF02 sensor(I2C_SDA,I2C_SCL); |
el14ml | 0:3403a3415306 | 28 | |
el14ml | 2:0dfa60f22f07 | 29 | /** |
el14ml | 2:0dfa60f22f07 | 30 | @namespace r_led |
el14ml | 3:ee005c9f0348 | 31 | @brief Output for status of red LED |
el14ml | 2:0dfa60f22f07 | 32 | */ |
el14ml | 0:3403a3415306 | 33 | DigitalOut r_led(LED_RED); |
el14ml | 2:0dfa60f22f07 | 34 | |
el14ml | 2:0dfa60f22f07 | 35 | /** |
el14ml | 2:0dfa60f22f07 | 36 | @namespace g_led |
el14ml | 3:ee005c9f0348 | 37 | @brief Output for status of green LED |
el14ml | 2:0dfa60f22f07 | 38 | */ |
el14ml | 0:3403a3415306 | 39 | DigitalOut g_led(LED_GREEN); |
el14ml | 2:0dfa60f22f07 | 40 | |
el14ml | 2:0dfa60f22f07 | 41 | /** |
el14ml | 2:0dfa60f22f07 | 42 | @namespace b_led |
el14ml | 3:ee005c9f0348 | 43 | @brief Output for status of blue LED |
el14ml | 2:0dfa60f22f07 | 44 | */ |
el14ml | 0:3403a3415306 | 45 | DigitalOut b_led(LED_BLUE); |
el14ml | 2:0dfa60f22f07 | 46 | |
el14ml | 2:0dfa60f22f07 | 47 | /** |
el14ml | 2:0dfa60f22f07 | 48 | @namespace button 1 |
el14ml | 2:0dfa60f22f07 | 49 | @brief Interrupt executes an event triggered task |
el14ml | 2:0dfa60f22f07 | 50 | */ |
el14ml | 0:3403a3415306 | 51 | InterruptIn button1(PTB9); |
el14ml | 0:3403a3415306 | 52 | |
el14ml | 2:0dfa60f22f07 | 53 | /** |
el14ml | 2:0dfa60f22f07 | 54 | @namespace button 2 |
el14ml | 2:0dfa60f22f07 | 55 | @brief Interrupt executes an event triggered task |
el14ml | 2:0dfa60f22f07 | 56 | */ |
el14ml | 2:0dfa60f22f07 | 57 | InterruptIn button2(PTB18); |
el14ml | 0:3403a3415306 | 58 | |
el14ml | 2:0dfa60f22f07 | 59 | /** |
el14ml | 2:0dfa60f22f07 | 60 | @namespace buzzer |
el14ml | 3:ee005c9f0348 | 61 | @brief Use PWM pin to control the volume of the buzzer, duty cycle and period |
el14ml | 2:0dfa60f22f07 | 62 | */ |
el14ml | 2:0dfa60f22f07 | 63 | PwmOut buzzer(PTA2); |
el14ml | 2:0dfa60f22f07 | 64 | |
el14ml | 2:0dfa60f22f07 | 65 | /** |
el14ml | 2:0dfa60f22f07 | 66 | @namespace pot |
el14ml | 3:ee005c9f0348 | 67 | @brief Read value of the potentiometer from the potentiometer position |
el14ml | 2:0dfa60f22f07 | 68 | */ |
el14ml | 2:0dfa60f22f07 | 69 | AnalogIn rate(PTB10); |
el14ml | 2:0dfa60f22f07 | 70 | |
el14ml | 2:0dfa60f22f07 | 71 | /** |
el14ml | 2:0dfa60f22f07 | 72 | @namespace myled |
el14ml | 2:0dfa60f22f07 | 73 | @brief Output for status of red LED, used as auditory alert |
el14ml | 2:0dfa60f22f07 | 74 | */ |
el14ml | 2:0dfa60f22f07 | 75 | DigitalOut myled(PTC2); |
el14ml | 2:0dfa60f22f07 | 76 | |
el14ml | 2:0dfa60f22f07 | 77 | /** |
el14ml | 2:0dfa60f22f07 | 78 | @namespace timer |
el14ml | 2:0dfa60f22f07 | 79 | @brief Periodic interrupt executes a time triggered task |
el14ml | 2:0dfa60f22f07 | 80 | */ |
el14ml | 2:0dfa60f22f07 | 81 | Ticker ticker; |
el14ml | 2:0dfa60f22f07 | 82 | |
el14ml | 2:0dfa60f22f07 | 83 | /** |
el14ml | 2:0dfa60f22f07 | 84 | @namespace timeout |
el14ml | 2:0dfa60f22f07 | 85 | @brief Interrupt used to call a function after a specified amount of time |
el14ml | 2:0dfa60f22f07 | 86 | */ |
el14ml | 2:0dfa60f22f07 | 87 | Timeout out; |
el14ml | 2:0dfa60f22f07 | 88 | |
el14ml | 2:0dfa60f22f07 | 89 | //variables |
el14ml | 2:0dfa60f22f07 | 90 | volatile int g_button1_flag = 0; /*!< Set flag in ISR for button 1, event triggered interrupt */ |
el14ml | 2:0dfa60f22f07 | 91 | volatile int g_button2_flag = 0; /*!< Set flag in ISR for button 2, event triggered interrupt */ |
el14ml | 2:0dfa60f22f07 | 92 | volatile int g_ticker_flag = 0; /*!< Set ticker flag in ISR , time triggered interrupt */ |
el14ml | 0:3403a3415306 | 93 | |
el14ml | 0:3403a3415306 | 94 | |
el14ml | 2:0dfa60f22f07 | 95 | /** |
el14ml | 2:0dfa60f22f07 | 96 | The main function where the code is executed |
el14ml | 2:0dfa60f22f07 | 97 | */ |
el14ml | 3:ee005c9f0348 | 98 | int main(); |
el14ml | 2:0dfa60f22f07 | 99 | |
el14ml | 2:0dfa60f22f07 | 100 | /** |
el14ml | 3:ee005c9f0348 | 101 | setting flag to 1 |
el14ml | 2:0dfa60f22f07 | 102 | */ |
el14ml | 2:0dfa60f22f07 | 103 | void units(); |
el14ml | 2:0dfa60f22f07 | 104 | |
el14ml | 2:0dfa60f22f07 | 105 | /** |
el14ml | 3:ee005c9f0348 | 106 | setting flag to 1 |
el14ml | 2:0dfa60f22f07 | 107 | */ |
el14ml | 2:0dfa60f22f07 | 108 | void mode(); |
el14ml | 2:0dfa60f22f07 | 109 | |
el14ml | 2:0dfa60f22f07 | 110 | /** |
el14ml | 3:ee005c9f0348 | 111 | setting flag to 1 |
el14ml | 2:0dfa60f22f07 | 112 | */ |
el14ml | 2:0dfa60f22f07 | 113 | void timeout_isr(); |
el14ml | 2:0dfa60f22f07 | 114 | |
el14ml | 2:0dfa60f22f07 | 115 | /** |
el14ml | 3:ee005c9f0348 | 116 | setting flag to 1 |
el14ml | 2:0dfa60f22f07 | 117 | */ |
el14ml | 2:0dfa60f22f07 | 118 | void ticker_isr(); |
el14ml | 2:0dfa60f22f07 | 119 | |
el14ml | 2:0dfa60f22f07 | 120 | /** |
el14ml | 3:ee005c9f0348 | 121 | Setting up the buttons and on board LEDs |
el14ml | 2:0dfa60f22f07 | 122 | */ |
el14ml | 2:0dfa60f22f07 | 123 | void init_K64F(); |
el14ml | 2:0dfa60f22f07 | 124 | |
el14ml | 2:0dfa60f22f07 | 125 | /** |
el14ml | 3:ee005c9f0348 | 126 | Inital screen printed |
el14ml | 2:0dfa60f22f07 | 127 | */ |
el14ml | 2:0dfa60f22f07 | 128 | void initialScreen(); |
el14ml | 2:0dfa60f22f07 | 129 | |
el14ml | 2:0dfa60f22f07 | 130 | /** |
el14ml | 3:ee005c9f0348 | 131 | Initialize graph array for distance points |
el14ml | 2:0dfa60f22f07 | 132 | */ |
el14ml | 2:0dfa60f22f07 | 133 | void initialArray(); |
el14ml | 2:0dfa60f22f07 | 134 | |
el14ml | 2:0dfa60f22f07 | 135 | /** |
el14ml | 2:0dfa60f22f07 | 136 | calculate the average distance from a set number of consecutive readings |
el14ml | 2:0dfa60f22f07 | 137 | */ |
el14ml | 2:0dfa60f22f07 | 138 | void get_averageDistance(); |
el14ml | 2:0dfa60f22f07 | 139 | |
el14ml | 2:0dfa60f22f07 | 140 | /** |
el14ml | 2:0dfa60f22f07 | 141 | Set visual and auditory alerts |
el14ml | 2:0dfa60f22f07 | 142 | */ |
el14ml | 2:0dfa60f22f07 | 143 | void redLedIndicator(); |
el14ml | 2:0dfa60f22f07 | 144 | |
el14ml | 2:0dfa60f22f07 | 145 | /** |
el14ml | 2:0dfa60f22f07 | 146 | Creates rectangular bars |
el14ml | 2:0dfa60f22f07 | 147 | */ |
el14ml | 2:0dfa60f22f07 | 148 | void drawDistanceBars(); |
el14ml | 2:0dfa60f22f07 | 149 | |
el14ml | 2:0dfa60f22f07 | 150 | /** |
el14ml | 2:0dfa60f22f07 | 151 | Shifts array elements by one |
el14ml | 2:0dfa60f22f07 | 152 | */ |
el14ml | 2:0dfa60f22f07 | 153 | void moveArrayElements(); |
el14ml | 2:0dfa60f22f07 | 154 | |
el14ml | 2:0dfa60f22f07 | 155 | /** |
el14ml | 2:0dfa60f22f07 | 156 | assigning float distance to first element of graph matrix |
el14ml | 2:0dfa60f22f07 | 157 | */ |
el14ml | 2:0dfa60f22f07 | 158 | void adjacentArrayElements(); |
el14ml | 2:0dfa60f22f07 | 159 | |
el14ml | 2:0dfa60f22f07 | 160 | /** |
el14ml | 2:0dfa60f22f07 | 161 | plots the x and y axes |
el14ml | 2:0dfa60f22f07 | 162 | */ |
el14ml | 2:0dfa60f22f07 | 163 | void plotAxes(); |
el14ml | 2:0dfa60f22f07 | 164 | |
el14ml | 2:0dfa60f22f07 | 165 | /** |
el14ml | 2:0dfa60f22f07 | 166 | converts float distance to integer pixel and plots the point |
el14ml | 2:0dfa60f22f07 | 167 | */ |
el14ml | 2:0dfa60f22f07 | 168 | void plotDistancePoint(); |
el14ml | 2:0dfa60f22f07 | 169 | |
el14ml | 2:0dfa60f22f07 | 170 | //void modeTwo(); |
el14ml | 0:3403a3415306 | 171 | |
el14ml | 3:ee005c9f0348 | 172 | /// equation which relates the average distance to the frequency of the buzzer |
el14ml | 0:3403a3415306 | 173 | float buzzerPeriod; |
el14ml | 3:ee005c9f0348 | 174 | |
el14ml | 3:ee005c9f0348 | 175 | /// output value of the potentiometer used to control buzzer volume |
el14ml | 0:3403a3415306 | 176 | float delay; |
el14ml | 3:ee005c9f0348 | 177 | |
el14ml | 3:ee005c9f0348 | 178 | /// average of multiple consecutive distance readings |
el14ml | 0:3403a3415306 | 179 | float averageDistance; |
el14ml | 3:ee005c9f0348 | 180 | |
el14ml | 3:ee005c9f0348 | 181 | /// initialize graph array, 2 pixels used for a and y axis hence array not 84 |
el14ml | 0:3403a3415306 | 182 | float graphArray[82]; |
el14ml | 0:3403a3415306 | 183 | |
el14ml | 0:3403a3415306 | 184 | #endif |