Embedded Systems Project Mateusz Loboda 200843098

Dependencies:   N5110 SRF02-Mateusz mbed

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?

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