A simple project utilizing the SRF02 Ultrasonic Distance Sensor

Dependencies:   N5110 PowerControl SRF02 beep mbed

Committer:
adrenc94
Date:
Tue May 12 10:10:35 2015 +0000
Revision:
0:28446a476280
Final Product

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adrenc94 0:28446a476280 1 /**
adrenc94 0:28446a476280 2 @file main.h
adrenc94 0:28446a476280 3 @brief Header file containing function prototypes, defines and global variables.
adrenc94 0:28446a476280 4 @brief Used for interfacing with the SRF02 sensor and the Nokia 5110 LCD Display
adrenc94 0:28446a476280 5 @brief Acknowledgements to Craig A. Evans's N5110 Library.
adrenc94 0:28446a476280 6 @brief Acknowledgements to Craig A. Evans's SRF02 Library.
adrenc94 0:28446a476280 7 @brief Acknowledgements to Peter Drescher's beep Library.
adrenc94 0:28446a476280 8 @brief Acknowledgements to JST 2011'S PowerControl Library.
adrenc94 0:28446a476280 9 @bried ELEC2645 Embedded System Project
adrenc94 0:28446a476280 10 @author Adre N Chin
adrenc94 0:28446a476280 11 @date May 2015
adrenc94 0:28446a476280 12 */
adrenc94 0:28446a476280 13
adrenc94 0:28446a476280 14 #include "mbed.h"
adrenc94 0:28446a476280 15 #include "SRF02.h"
adrenc94 0:28446a476280 16 #include "N5110.h"
adrenc94 0:28446a476280 17 #include "beep.h"
adrenc94 0:28446a476280 18 #include "PowerControl/PowerControl.h"
adrenc94 0:28446a476280 19 #include "PowerControl/EthernetPowerControl.h"
adrenc94 0:28446a476280 20
adrenc94 0:28446a476280 21 /**
adrenc94 0:28446a476280 22 @namespace lcd
adrenc94 0:28446a476280 23 @brief GPIO pins output to LCD Display
adrenc94 0:28446a476280 24 @brief (Vcc, SCE, RST, DC, MOSI, SCK, Backlight)
adrenc94 0:28446a476280 25 */
adrenc94 0:28446a476280 26 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
adrenc94 0:28446a476280 27
adrenc94 0:28446a476280 28 /**
adrenc94 0:28446a476280 29 @namespace sensor
adrenc94 0:28446a476280 30 @brief I2C pins to SRF02 sensor
adrenc94 0:28446a476280 31 @brief (SDA, SCL)
adrenc94 0:28446a476280 32 */
adrenc94 0:28446a476280 33 SRF02 sensor(p28, p27);
adrenc94 0:28446a476280 34
adrenc94 0:28446a476280 35 /**
adrenc94 0:28446a476280 36 @namespace button
adrenc94 0:28446a476280 37 @brief AnalogIn for Interrupt
adrenc94 0:28446a476280 38 */
adrenc94 0:28446a476280 39 InterruptIn button(p17);
adrenc94 0:28446a476280 40
adrenc94 0:28446a476280 41 /**
adrenc94 0:28446a476280 42 @namespace buzzer
adrenc94 0:28446a476280 43 @brief PWMOut to buzzer
adrenc94 0:28446a476280 44 */
adrenc94 0:28446a476280 45 Beep buzzer(p21);
adrenc94 0:28446a476280 46
adrenc94 0:28446a476280 47 /**
adrenc94 0:28446a476280 48 @namespace green
adrenc94 0:28446a476280 49 @brief PWMOut to green LED
adrenc94 0:28446a476280 50 */
adrenc94 0:28446a476280 51 PwmOut green(p22);
adrenc94 0:28446a476280 52
adrenc94 0:28446a476280 53 /**
adrenc94 0:28446a476280 54 @namespace green
adrenc94 0:28446a476280 55 @brief PWMOut to yellow LED
adrenc94 0:28446a476280 56 */
adrenc94 0:28446a476280 57 PwmOut yellow(p23);
adrenc94 0:28446a476280 58
adrenc94 0:28446a476280 59 /**
adrenc94 0:28446a476280 60 @namespace green
adrenc94 0:28446a476280 61 @brief PWMOut to red LED
adrenc94 0:28446a476280 62 */
adrenc94 0:28446a476280 63 PwmOut red(p24);
adrenc94 0:28446a476280 64
adrenc94 0:28446a476280 65
adrenc94 0:28446a476280 66 //Main prototypes of the system is stored here
adrenc94 0:28446a476280 67 /**
adrenc94 0:28446a476280 68 print welcome message
adrenc94 0:28446a476280 69 */
adrenc94 0:28446a476280 70 void welcomeMessage();
adrenc94 0:28446a476280 71
adrenc94 0:28446a476280 72 /**
adrenc94 0:28446a476280 73 * Get the current time and format it into a string
adrenc94 0:28446a476280 74 * @param time - Create buffer for time
adrenc94 0:28446a476280 75 * @param day - Create buffer for day
adrenc94 0:28446a476280 76 * @param date - Create buffer for date
adrenc94 0:28446a476280 77 * @param strftime - Format time into a string
adrenc94 0:28446a476280 78 * @param lcd.printString - print date & time on lcd
adrenc94 0:28446a476280 79 */
adrenc94 0:28446a476280 80 void getTime();
adrenc94 0:28446a476280 81
adrenc94 0:28446a476280 82 /**
adrenc94 0:28446a476280 83 * Tells the sensor to get a distance reading
adrenc94 0:28446a476280 84 * Sensor reading is in cm
adrenc94 0:28446a476280 85 * @param distance - Get distance from sensor
adrenc94 0:28446a476280 86 * @return distance - Store distance as an integer
adrenc94 0:28446a476280 87 */
adrenc94 0:28446a476280 88 void getDistance();
adrenc94 0:28446a476280 89
adrenc94 0:28446a476280 90 /**
adrenc94 0:28446a476280 91 *Use the stored distance to animate the car
adrenc94 0:28446a476280 92 *@param walls() - Hard code walls
adrenc94 0:28446a476280 93 *@param carDistancex() - Set pixel coordinate
adrenc94 0:28446a476280 94 *@param drawCar() - Draw car at previous set coordinate
adrenc94 0:28446a476280 95 */
adrenc94 0:28446a476280 96 void readDistance();
adrenc94 0:28446a476280 97
adrenc94 0:28446a476280 98 /**
adrenc94 0:28446a476280 99 *SAFE distance indicator
adrenc94 0:28446a476280 100 *@param red - Turn red LED off
adrenc94 0:28446a476280 101 *@param yellow - Turn yellow LED off
adrenc94 0:28446a476280 102 *@param green - Turn green LED on
adrenc94 0:28446a476280 103 *@param buzzer - 800hz beep for 0.05 seconds
adrenc94 0:28446a476280 104 */
adrenc94 0:28446a476280 105 void distance1();
adrenc94 0:28446a476280 106
adrenc94 0:28446a476280 107 /**
adrenc94 0:28446a476280 108 *CAUTION distance indicator
adrenc94 0:28446a476280 109 *@param red - Turn red LED off
adrenc94 0:28446a476280 110 *@param yellow - Turn yellow LED on
adrenc94 0:28446a476280 111 *@param green - Turn green LED off
adrenc94 0:28446a476280 112 *@param buzzer - 800hz beep for 0.2 seconds
adrenc94 0:28446a476280 113 */
adrenc94 0:28446a476280 114 void distance2();
adrenc94 0:28446a476280 115
adrenc94 0:28446a476280 116 /**
adrenc94 0:28446a476280 117 *CLOSE distance indicator
adrenc94 0:28446a476280 118 *@param red - Turn red LED on
adrenc94 0:28446a476280 119 *@param yellow - Turn yellow LED off
adrenc94 0:28446a476280 120 *@param green - Turn green LED off
adrenc94 0:28446a476280 121 *@param buzzer - 800hz beep for 0.7 seconds
adrenc94 0:28446a476280 122 */
adrenc94 0:28446a476280 123 void distance3();
adrenc94 0:28446a476280 124
adrenc94 0:28446a476280 125 /**
adrenc94 0:28446a476280 126 *DANGER distance indicator
adrenc94 0:28446a476280 127 *@param red - Turn red LED on
adrenc94 0:28446a476280 128 *@param yellow - Turn yellow LED off
adrenc94 0:28446a476280 129 *@param green - Turn green LED off
adrenc94 0:28446a476280 130 *@param buzzer - 1khz beep for 30 seconds (continuous)
adrenc94 0:28446a476280 131 */
adrenc94 0:28446a476280 132 void distanceDanger();
adrenc94 0:28446a476280 133
adrenc94 0:28446a476280 134 /**
adrenc94 0:28446a476280 135 *Show distance value to the user
adrenc94 0:28446a476280 136 *@param buffer1 - Create buffer for distance
adrenc94 0:28446a476280 137 *@param length - Put distance inside the buffer
adrenc94 0:28446a476280 138 *@param lcd.printString - Print the distance if the amount of character is =< 4
adrenc94 0:28446a476280 139 */
adrenc94 0:28446a476280 140 void printDistance();
adrenc94 0:28446a476280 141
adrenc94 0:28446a476280 142 /**
adrenc94 0:28446a476280 143 *Use the appropriate buzzer interval and LED based on distance
adrenc94 0:28446a476280 144 *@param distance1 - SAFE distance indicator
adrenc94 0:28446a476280 145 *@param distance2 - CAUTION distance indicator
adrenc94 0:28446a476280 146 *@param distance3 - CLOSE distance indicator
adrenc94 0:28446a476280 147 *@param distanceDanger - DANGER distance indicator
adrenc94 0:28446a476280 148 */
adrenc94 0:28446a476280 149 void beeperDistance();
adrenc94 0:28446a476280 150
adrenc94 0:28446a476280 151 //RTC configs
adrenc94 0:28446a476280 152 /**
adrenc94 0:28446a476280 153 *Set up button for ISR
adrenc94 0:28446a476280 154 *@param buttonFlag - Button will set flag when button is pressed
adrenc94 0:28446a476280 155 */
adrenc94 0:28446a476280 156 void buttonPressed();
adrenc94 0:28446a476280 157 int setTimeFlag = 0; /*!<Variable to check flag status*/
adrenc94 0:28446a476280 158 int buttonFlag = 0; /*!<Variable to check for interrupts*/
adrenc94 0:28446a476280 159
adrenc94 0:28446a476280 160 /**
adrenc94 0:28446a476280 161 *Hard Code Object and Zones
adrenc94 0:28446a476280 162 *@param safeWall - First zone
adrenc94 0:28446a476280 163 *@param cautionWall - Second zone
adrenc94 0:28446a476280 164 *@param dangerWall - Third zone
adrenc94 0:28446a476280 165 *@param object - Object
adrenc94 0:28446a476280 166 */
adrenc94 0:28446a476280 167 void walls();
adrenc94 0:28446a476280 168 void safeWall(); /*!<First Zone*/
adrenc94 0:28446a476280 169 void cautionWall(); /*!<Second Zone*/
adrenc94 0:28446a476280 170 void dangerWall(); /*!<Third Zone*/
adrenc94 0:28446a476280 171 void object(); /*!<Object*/
adrenc94 0:28446a476280 172
adrenc94 0:28446a476280 173 //Car Animation
adrenc94 0:28446a476280 174 /**
adrenc94 0:28446a476280 175 *Set up global variables for pixels
adrenc94 0:28446a476280 176 *The functions below change pixel coordinates via the global variable of each pixels
adrenc94 0:28446a476280 177 *@param a0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 178 *@param a1 - Pixel coordinates for front of car
adrenc94 0:28446a476280 179 *@param a2 - Pixel coordinates for front of car
adrenc94 0:28446a476280 180 *@param b0 - Pixel coordinates for middle of car
adrenc94 0:28446a476280 181 *@param b1 - Pixel coordinates for middle of car
adrenc94 0:28446a476280 182 *@param b2 - Pixel coordinates for middle of car
adrenc94 0:28446a476280 183 *@param b3 - Pixel coordinates for middle of car
adrenc94 0:28446a476280 184 *@param c0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 185 *@param c1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 186 *@param c2 - Pixel coordinates for back of car
adrenc94 0:28446a476280 187 *@param d0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 188 *@param e0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 189 *@param e1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 190 *@param f0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 191 *@param g0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 192 *@param g1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 193 *@param h0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 194 *@param h1 - Pixel coordinates for front of car
adrenc94 0:28446a476280 195 *@param h2 - Pixel coordinates for front of car
adrenc94 0:28446a476280 196 *@param h3 - Pixel coordinates for front of car
adrenc94 0:28446a476280 197 *@param i0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 198 *@param i1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 199 *@param i2 - Pixel coordinates for back of car
adrenc94 0:28446a476280 200 *@param i3 - Pixel coordinates for back of car
adrenc94 0:28446a476280 201 *@param j0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 202 *@param j1 - Pixel coordinates for front of car
adrenc94 0:28446a476280 203 *@param k0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 204 *@param k1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 205 *@param l0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 206 *@param l1 - Pixel coordinates for front of car
adrenc94 0:28446a476280 207 *@param m0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 208 *@param m1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 209 *@param n0 - Pixel coordinates for front of car
adrenc94 0:28446a476280 210 *@param n1 - Pixel coordinates for front of car
adrenc94 0:28446a476280 211 *@param o0 - Pixel coordinates for back of car
adrenc94 0:28446a476280 212 *@param o1 - Pixel coordinates for back of car
adrenc94 0:28446a476280 213 *@param q0 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 214 *@param q1 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 215 *@param q2 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 216 *@param q3 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 217 *@param q4 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 218 *@param q5 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 219 *@param q6 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 220 *@param q7 - Pixel coordinates for roof of car
adrenc94 0:28446a476280 221 *@param w0 - Pixel coordinates for wheel of car
adrenc94 0:28446a476280 222 *@param w1 - Pixel coordinates for wheel of car
adrenc94 0:28446a476280 223 */
adrenc94 0:28446a476280 224 void drawCar();
adrenc94 0:28446a476280 225 void carDistance1(); /*!<Distance more than 205*/
adrenc94 0:28446a476280 226 void carDistance2(); /*!<Distance between 195 to 204*/
adrenc94 0:28446a476280 227 void carDistance3(); /*!<Distance between 180 and 194*/
adrenc94 0:28446a476280 228 void carDistance4(); /*!<Distance between 165 and 179*/
adrenc94 0:28446a476280 229 void carDistance5(); /*!<Distance between 150 and 164*/
adrenc94 0:28446a476280 230 void carDistance6(); /*!<Distance between 135 and 149*/
adrenc94 0:28446a476280 231 void carDistance7(); /*!<Distance between 120 and 134*/
adrenc94 0:28446a476280 232 void carDistance8(); /*!<Distance between 105 and 119*/
adrenc94 0:28446a476280 233 void carDistance9(); /*!<Distance between 90 and 104*/
adrenc94 0:28446a476280 234 void carDistance10(); /*!<Distance between 75 and 89*/
adrenc94 0:28446a476280 235 void carDistance11(); /*!<Distance between 60 and 74*/
adrenc94 0:28446a476280 236 void carDistance12(); /*!<Distance between 45 and 59*/
adrenc94 0:28446a476280 237 void carDistance13(); /*!<Distance between 30 and 44*/
adrenc94 0:28446a476280 238 void carDistance14(); /*!<Distance between 21 and 29*/
adrenc94 0:28446a476280 239 void carDistance15(); /*!<Distance below 20*/
adrenc94 0:28446a476280 240
adrenc94 0:28446a476280 241 //variables
adrenc94 0:28446a476280 242 int distance; /*!<Distance of object from the car*/
adrenc94 0:28446a476280 243
adrenc94 0:28446a476280 244 //Variables for car animation
adrenc94 0:28446a476280 245 int a0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 246 int a1; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 247 int a2; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 248 int b0; /*!<Set pixel coordinates for middle of car*/
adrenc94 0:28446a476280 249 int b1; /*!<Set pixel coordinates for middle of car*/
adrenc94 0:28446a476280 250 int b2; /*!<Set pixel coordinates for middle of car*/
adrenc94 0:28446a476280 251 int b3; /*!<Set pixel coordinates for middle of car*/
adrenc94 0:28446a476280 252 int c0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 253 int c1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 254 int c2; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 255 int d0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 256 int e0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 257 int e1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 258 int f0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 259 int g0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 260 int g1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 261 int h0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 262 int h1; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 263 int h2; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 264 int h3; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 265 int i0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 266 int i1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 267 int i2; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 268 int i3; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 269 int j0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 270 int j1; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 271 int k0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 272 int k1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 273 int l0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 274 int l1; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 275 int m0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 276 int m1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 277 int n0; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 278 int n1; /*!<Set pixel coordinates for front of car*/
adrenc94 0:28446a476280 279 int o0; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 280 int o1; /*!<Set pixel coordinates for back of car*/
adrenc94 0:28446a476280 281 int q0; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 282 int q1; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 283 int q2; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 284 int q3; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 285 int q4; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 286 int q5; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 287 int q6; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 288 int q7; /*!<Set pixel coordinates for roof of car*/
adrenc94 0:28446a476280 289 int w0; /*!<Set pixel coordinates for wheel of car*/
adrenc94 0:28446a476280 290 int w1; /*!<Set pixel coordinates for wheel of car*/