My final code
Dependencies: N5110 PowerControl SRF02 mbed
My_Ultrasonic_sensor.cpp@1:3a729bf4a055, 2015-05-11 (annotated)
- Committer:
- msa1992
- Date:
- Mon May 11 22:47:07 2015 +0000
- Revision:
- 1:3a729bf4a055
- Parent:
- 0:4de98c636e60
Final Code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
msa1992 | 0:4de98c636e60 | 1 | /** |
msa1992 | 0:4de98c636e60 | 2 | @file My_Ultrasonic_sensor.cpp |
msa1992 | 0:4de98c636e60 | 3 | @brief Header file containing functions prototypes, defines and global variables. |
msa1992 | 0:4de98c636e60 | 4 | @brief Doxygen documentation. |
msa1992 | 0:4de98c636e60 | 5 | @brief Revision 1.0. |
msa1992 | 0:4de98c636e60 | 6 | @author Mohammed Al Mahrouqi |
msa1992 | 0:4de98c636e60 | 7 | @date 1 May 2015 |
msa1992 | 0:4de98c636e60 | 8 | */ |
msa1992 | 0:4de98c636e60 | 9 | |
msa1992 | 0:4de98c636e60 | 10 | /// import "mbed.h" library to the code |
msa1992 | 0:4de98c636e60 | 11 | #include "mbed.h" |
msa1992 | 0:4de98c636e60 | 12 | /// import "N5110.h" library to the code |
msa1992 | 0:4de98c636e60 | 13 | #include "N5110.h" |
msa1992 | 0:4de98c636e60 | 14 | /// import "SRF02.h" library to the code |
msa1992 | 0:4de98c636e60 | 15 | #include "SRF02.h" |
msa1992 | 0:4de98c636e60 | 16 | /// import "PowerControl/PowerControl.h" library to the code |
msa1992 | 0:4de98c636e60 | 17 | #include "PowerControl/PowerControl.h" |
msa1992 | 0:4de98c636e60 | 18 | /// import "PowerControl/EthernetPowerControl.h" library to the code |
msa1992 | 0:4de98c636e60 | 19 | #include "PowerControl/EthernetPowerControl.h" |
msa1992 | 0:4de98c636e60 | 20 | |
msa1992 | 0:4de98c636e60 | 21 | /// power down USB interface |
msa1992 | 0:4de98c636e60 | 22 | #define USR_POWERDOWN (0x104) |
msa1992 | 0:4de98c636e60 | 23 | |
msa1992 | 0:4de98c636e60 | 24 | |
msa1992 | 0:4de98c636e60 | 25 | // VCC,SCE,RST,D/C,MOSI,SCLK,LED |
msa1992 | 0:4de98c636e60 | 26 | ///N5110 lcd object defined |
msa1992 | 0:4de98c636e60 | 27 | N5110 lcd(p7,p8,p9,p10,p11,p13,p26); |
msa1992 | 0:4de98c636e60 | 28 | // Can also power (VCC) directly from VOUT (3.3 V) - |
msa1992 | 0:4de98c636e60 | 29 | // Can give better performance due to current limitation from GPIO pin |
msa1992 | 0:4de98c636e60 | 30 | /// PWM pin for buzzer output |
msa1992 | 0:4de98c636e60 | 31 | PwmOut buzzer(p21); |
msa1992 | 0:4de98c636e60 | 32 | /// SRF02 sensor pins |
msa1992 | 0:4de98c636e60 | 33 | SRF02 sensor(p28,p27); |
msa1992 | 0:4de98c636e60 | 34 | /// PWM pin for LED |
msa1992 | 0:4de98c636e60 | 35 | PwmOut led(p24); |
msa1992 | 0:4de98c636e60 | 36 | /// AnalogIn pin for pot output |
msa1992 | 0:4de98c636e60 | 37 | AnalogIn Pot(p20); |
msa1992 | 0:4de98c636e60 | 38 | /// InterruptIn pin for button |
msa1992 | 0:4de98c636e60 | 39 | InterruptIn button(p16); |
msa1992 | 0:4de98c636e60 | 40 | |
msa1992 | 0:4de98c636e60 | 41 | |
msa1992 | 0:4de98c636e60 | 42 | /// a Ticker variable is created. used to get quicker reading response |
msa1992 | 0:4de98c636e60 | 43 | Ticker timer; |
msa1992 | 0:4de98c636e60 | 44 | |
msa1992 | 0:4de98c636e60 | 45 | /// a float variable is created and called meterDistance |
msa1992 | 0:4de98c636e60 | 46 | float metreDistance; |
msa1992 | 0:4de98c636e60 | 47 | |
msa1992 | 0:4de98c636e60 | 48 | int timerFlag1 = 0; //flag for timer |
msa1992 | 0:4de98c636e60 | 49 | |
msa1992 | 0:4de98c636e60 | 50 | ///Interrupt Service Routine |
msa1992 | 0:4de98c636e60 | 51 | void timerExpired() |
msa1992 | 0:4de98c636e60 | 52 | { |
msa1992 | 0:4de98c636e60 | 53 | /// set timerFlag1 = 1 |
msa1992 | 0:4de98c636e60 | 54 | timerFlag1 = 1; //set flag |
msa1992 | 0:4de98c636e60 | 55 | } |
msa1992 | 0:4de98c636e60 | 56 | /// Power down the USB interface |
msa1992 | 0:4de98c636e60 | 57 | int semihost_powerdown() |
msa1992 | 0:4de98c636e60 | 58 | { |
msa1992 | 0:4de98c636e60 | 59 | uint32_t arg; |
msa1992 | 0:4de98c636e60 | 60 | return __semihost(USR_POWERDOWN, &arg); |
msa1992 | 0:4de98c636e60 | 61 | |
msa1992 | 0:4de98c636e60 | 62 | } |
msa1992 | 0:4de98c636e60 | 63 | ///draw rocket |
msa1992 | 0:4de98c636e60 | 64 | ///@param int x to set a pixel in x-axis of the display |
msa1992 | 0:4de98c636e60 | 65 | ///@param int y to set a pixel in y-axis of the display |
msa1992 | 0:4de98c636e60 | 66 | void rocketDraw(int x, int y) |
msa1992 | 0:4de98c636e60 | 67 | { |
msa1992 | 0:4de98c636e60 | 68 | lcd.setPixel(42+x,27+y); |
msa1992 | 0:4de98c636e60 | 69 | |
msa1992 | 0:4de98c636e60 | 70 | lcd.setPixel(41+x,28+y); |
msa1992 | 0:4de98c636e60 | 71 | lcd.setPixel(40+x,29+y); |
msa1992 | 0:4de98c636e60 | 72 | |
msa1992 | 0:4de98c636e60 | 73 | lcd.setPixel(42+x,28+y); |
msa1992 | 0:4de98c636e60 | 74 | |
msa1992 | 0:4de98c636e60 | 75 | lcd.setPixel(43+x,28+y); |
msa1992 | 0:4de98c636e60 | 76 | lcd.setPixel(44+x,29+y); |
msa1992 | 0:4de98c636e60 | 77 | |
msa1992 | 0:4de98c636e60 | 78 | lcd.setPixel(41+x,29+y); |
msa1992 | 0:4de98c636e60 | 79 | lcd.setPixel(42+x,29+y); |
msa1992 | 0:4de98c636e60 | 80 | lcd.setPixel(43+x,29+y); |
msa1992 | 0:4de98c636e60 | 81 | |
msa1992 | 0:4de98c636e60 | 82 | lcd.setPixel(40+x,30+y); |
msa1992 | 0:4de98c636e60 | 83 | lcd.setPixel(40+x,31+y); |
msa1992 | 0:4de98c636e60 | 84 | lcd.setPixel(40+x,32+y); |
msa1992 | 0:4de98c636e60 | 85 | lcd.setPixel(40+x,33+y); |
msa1992 | 0:4de98c636e60 | 86 | lcd.setPixel(40+x,34+y); |
msa1992 | 0:4de98c636e60 | 87 | lcd.setPixel(40+x,35+y); |
msa1992 | 0:4de98c636e60 | 88 | |
msa1992 | 0:4de98c636e60 | 89 | lcd.setPixel(41+x,30+y); |
msa1992 | 0:4de98c636e60 | 90 | lcd.setPixel(41+x,31+y); |
msa1992 | 0:4de98c636e60 | 91 | lcd.setPixel(41+x,32+y); |
msa1992 | 0:4de98c636e60 | 92 | lcd.setPixel(41+x,33+y); |
msa1992 | 0:4de98c636e60 | 93 | lcd.setPixel(41+x,34+y); |
msa1992 | 0:4de98c636e60 | 94 | lcd.setPixel(41+x,35+y); |
msa1992 | 0:4de98c636e60 | 95 | |
msa1992 | 0:4de98c636e60 | 96 | lcd.setPixel(42+x,30+y); |
msa1992 | 0:4de98c636e60 | 97 | lcd.setPixel(42+x,31+y); |
msa1992 | 0:4de98c636e60 | 98 | lcd.setPixel(42+x,32+y); |
msa1992 | 0:4de98c636e60 | 99 | lcd.setPixel(42+x,33+y); |
msa1992 | 0:4de98c636e60 | 100 | lcd.setPixel(42+x,34+y); |
msa1992 | 0:4de98c636e60 | 101 | lcd.setPixel(42+x,35+y); |
msa1992 | 0:4de98c636e60 | 102 | |
msa1992 | 0:4de98c636e60 | 103 | lcd.setPixel(43+x,30+y); |
msa1992 | 0:4de98c636e60 | 104 | lcd.setPixel(43+x,31+y); |
msa1992 | 0:4de98c636e60 | 105 | lcd.setPixel(43+x,32+y); |
msa1992 | 0:4de98c636e60 | 106 | lcd.setPixel(43+x,33+y); |
msa1992 | 0:4de98c636e60 | 107 | lcd.setPixel(43+x,34+y); |
msa1992 | 0:4de98c636e60 | 108 | lcd.setPixel(43+x,35+y); |
msa1992 | 0:4de98c636e60 | 109 | |
msa1992 | 0:4de98c636e60 | 110 | lcd.setPixel(44+x,30+y); |
msa1992 | 0:4de98c636e60 | 111 | lcd.setPixel(44+x,31+y); |
msa1992 | 0:4de98c636e60 | 112 | lcd.setPixel(44+x,32+y); |
msa1992 | 0:4de98c636e60 | 113 | lcd.setPixel(44+x,33+y); |
msa1992 | 0:4de98c636e60 | 114 | lcd.setPixel(44+x,34+y); |
msa1992 | 0:4de98c636e60 | 115 | lcd.setPixel(44+x,35+y); |
msa1992 | 0:4de98c636e60 | 116 | |
msa1992 | 0:4de98c636e60 | 117 | lcd.setPixel(45+x,36+y); |
msa1992 | 0:4de98c636e60 | 118 | lcd.setPixel(46+x,37+y); |
msa1992 | 0:4de98c636e60 | 119 | lcd.setPixel(47+x,38+y); |
msa1992 | 0:4de98c636e60 | 120 | |
msa1992 | 0:4de98c636e60 | 121 | lcd.setPixel(39+x,36+y); |
msa1992 | 0:4de98c636e60 | 122 | lcd.setPixel(38+x,37+y); |
msa1992 | 0:4de98c636e60 | 123 | lcd.setPixel(37+x,38+y); |
msa1992 | 0:4de98c636e60 | 124 | |
msa1992 | 0:4de98c636e60 | 125 | lcd.setPixel(42+x,36+y); |
msa1992 | 0:4de98c636e60 | 126 | lcd.setPixel(42+x,37+y); |
msa1992 | 0:4de98c636e60 | 127 | lcd.setPixel(42+x,38+y); |
msa1992 | 0:4de98c636e60 | 128 | } |
msa1992 | 0:4de98c636e60 | 129 | /// set buttonFlag = 0 |
msa1992 | 0:4de98c636e60 | 130 | int buttonFlag = 0; |
msa1992 | 0:4de98c636e60 | 131 | |
msa1992 | 0:4de98c636e60 | 132 | /// void function is used to initilize the button |
msa1992 | 0:4de98c636e60 | 133 | void buttonPressed() |
msa1992 | 0:4de98c636e60 | 134 | { |
msa1992 | 0:4de98c636e60 | 135 | /// Once button pressed, measuring unit changes |
msa1992 | 0:4de98c636e60 | 136 | buttonFlag = !buttonFlag; |
msa1992 | 0:4de98c636e60 | 137 | } |
msa1992 | 0:4de98c636e60 | 138 | |
msa1992 | 0:4de98c636e60 | 139 | |
msa1992 | 0:4de98c636e60 | 140 | /// initilize main function |
msa1992 | 0:4de98c636e60 | 141 | int main() |
msa1992 | 0:4de98c636e60 | 142 | { |
msa1992 | 0:4de98c636e60 | 143 | |
msa1992 | 0:4de98c636e60 | 144 | |
msa1992 | 0:4de98c636e60 | 145 | |
msa1992 | 0:4de98c636e60 | 146 | |
msa1992 | 0:4de98c636e60 | 147 | /// Pulldown is used to keep constant and only changes if button pressed |
msa1992 | 0:4de98c636e60 | 148 | button.mode(PullDown); |
msa1992 | 0:4de98c636e60 | 149 | /// This to allow unit changes if button pressed |
msa1992 | 0:4de98c636e60 | 150 | button.rise(&buttonPressed); |
msa1992 | 0:4de98c636e60 | 151 | /// call ISR every 1.0 seconds |
msa1992 | 0:4de98c636e60 | 152 | timer.attach(&timerExpired,0.1); //call ISR every 1.0 seconds |
msa1992 | 0:4de98c636e60 | 153 | |
msa1992 | 0:4de98c636e60 | 154 | |
msa1992 | 0:4de98c636e60 | 155 | /// Powering down the Ethernet interface |
msa1992 | 0:4de98c636e60 | 156 | int result = semihost_powerdown(); |
msa1992 | 0:4de98c636e60 | 157 | PHY_PowerDown(); |
msa1992 | 0:4de98c636e60 | 158 | |
msa1992 | 0:4de98c636e60 | 159 | /// initialise display |
msa1992 | 0:4de98c636e60 | 160 | lcd.init(); |
msa1992 | 0:4de98c636e60 | 161 | /// print this "text" in pixels coordinates (x,y) |
msa1992 | 0:4de98c636e60 | 162 | lcd.printString("Mini radar",15,0); |
msa1992 | 0:4de98c636e60 | 163 | /// wait (# seconds) till next function |
msa1992 | 0:4de98c636e60 | 164 | wait(1); |
msa1992 | 0:4de98c636e60 | 165 | /// print this "text" in pixels coordinates (x,y) |
msa1992 | 0:4de98c636e60 | 166 | lcd.printString("Done By:",20,1); |
msa1992 | 0:4de98c636e60 | 167 | /// wait (# seconds) till next function |
msa1992 | 0:4de98c636e60 | 168 | wait(1); |
msa1992 | 0:4de98c636e60 | 169 | /// print this "text" in pixels coordinates (x,y) |
msa1992 | 0:4de98c636e60 | 170 | lcd.printString("Mohammed",18,2); |
msa1992 | 0:4de98c636e60 | 171 | /// wait (# seconds) till next function |
msa1992 | 0:4de98c636e60 | 172 | wait(1); |
msa1992 | 0:4de98c636e60 | 173 | /// print this "text" in pixels coordinates (x,y) |
msa1992 | 0:4de98c636e60 | 174 | lcd.printString("Al Mahrouqi",10,3); |
msa1992 | 0:4de98c636e60 | 175 | /// wait (# seconds) till next function |
msa1992 | 0:4de98c636e60 | 176 | wait(1); |
msa1992 | 0:4de98c636e60 | 177 | /// print this "text" in pixels coordinates (x,y) |
msa1992 | 0:4de98c636e60 | 178 | lcd.printString("200823396",18,4); |
msa1992 | 0:4de98c636e60 | 179 | /// wait (# seconds) till next function |
msa1992 | 0:4de98c636e60 | 180 | wait(1); |
msa1992 | 0:4de98c636e60 | 181 | /// referesh the LCD display |
msa1992 | 0:4de98c636e60 | 182 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 183 | /// clear the display |
msa1992 | 0:4de98c636e60 | 184 | lcd.clear(); |
msa1992 | 0:4de98c636e60 | 185 | |
msa1992 | 0:4de98c636e60 | 186 | |
msa1992 | 0:4de98c636e60 | 187 | /// create a while loop |
msa1992 | 0:4de98c636e60 | 188 | while(1) { |
msa1992 | 0:4de98c636e60 | 189 | |
msa1992 | 0:4de98c636e60 | 190 | |
msa1992 | 0:4de98c636e60 | 191 | |
msa1992 | 0:4de98c636e60 | 192 | |
msa1992 | 0:4de98c636e60 | 193 | /// create if function for timerFlag1. Flag is set |
msa1992 | 0:4de98c636e60 | 194 | if (timerFlag1) { |
msa1992 | 0:4de98c636e60 | 195 | ///Reset flag1 |
msa1992 | 0:4de98c636e60 | 196 | timerFlag1 = 0; |
msa1992 | 0:4de98c636e60 | 197 | |
msa1992 | 0:4de98c636e60 | 198 | } |
msa1992 | 0:4de98c636e60 | 199 | |
msa1992 | 0:4de98c636e60 | 200 | |
msa1992 | 0:4de98c636e60 | 201 | |
msa1992 | 0:4de98c636e60 | 202 | |
msa1992 | 0:4de98c636e60 | 203 | |
msa1992 | 0:4de98c636e60 | 204 | ///read sensor distance in cm and print over serial port |
msa1992 | 0:4de98c636e60 | 205 | int distance = sensor.getDistanceCm(); |
msa1992 | 0:4de98c636e60 | 206 | //serial.printf("Distance = %d cm\n",distance); |
msa1992 | 0:4de98c636e60 | 207 | // short delay before next measurement |
msa1992 | 0:4de98c636e60 | 208 | |
msa1992 | 0:4de98c636e60 | 209 | |
msa1992 | 0:4de98c636e60 | 210 | /// each character is 6 pixels wide, screen is 84 pixels |
msa1992 | 0:4de98c636e60 | 211 | char buffer[14]; |
msa1992 | 0:4de98c636e60 | 212 | // so can display a string of a maximum 14 characters in length |
msa1992 | 0:4de98c636e60 | 213 | // or create formatted strings - ensure they aren't more than 14 characters long |
msa1992 | 0:4de98c636e60 | 214 | |
msa1992 | 0:4de98c636e60 | 215 | /// create float variable called distance |
msa1992 | 0:4de98c636e60 | 216 | float distanceFloat = distance; |
msa1992 | 0:4de98c636e60 | 217 | /// convert ditance from cm to m |
msa1992 | 0:4de98c636e60 | 218 | metreDistance = distanceFloat / 100; |
msa1992 | 0:4de98c636e60 | 219 | |
msa1992 | 0:4de98c636e60 | 220 | /// set button flag |
msa1992 | 0:4de98c636e60 | 221 | if(buttonFlag) { |
msa1992 | 0:4de98c636e60 | 222 | |
msa1992 | 0:4de98c636e60 | 223 | /// print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 224 | int length = sprintf(buffer,"Dist = %.2f m",metreDistance); |
msa1992 | 0:4de98c636e60 | 225 | |
msa1992 | 0:4de98c636e60 | 226 | /// if string will fit on display |
msa1992 | 0:4de98c636e60 | 227 | if (length >= 14) { |
msa1992 | 0:4de98c636e60 | 228 | /// display on screen |
msa1992 | 0:4de98c636e60 | 229 | lcd.printString(buffer,0,0); |
msa1992 | 0:4de98c636e60 | 230 | } |
msa1992 | 0:4de98c636e60 | 231 | /// refresh screen |
msa1992 | 0:4de98c636e60 | 232 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 233 | |
msa1992 | 0:4de98c636e60 | 234 | /// if flag is = 0, print distance in cm |
msa1992 | 0:4de98c636e60 | 235 | } else if(buttonFlag == 0) { |
msa1992 | 0:4de98c636e60 | 236 | /// print distance in cm |
msa1992 | 0:4de98c636e60 | 237 | int length = sprintf(buffer,"Dist = %2d Cm",distance); |
msa1992 | 0:4de98c636e60 | 238 | |
msa1992 | 0:4de98c636e60 | 239 | /// if string will fit on display |
msa1992 | 0:4de98c636e60 | 240 | if (length <= 14) { |
msa1992 | 0:4de98c636e60 | 241 | /// display on screen |
msa1992 | 0:4de98c636e60 | 242 | lcd.printString(buffer,0,0); |
msa1992 | 0:4de98c636e60 | 243 | } |
msa1992 | 0:4de98c636e60 | 244 | /// referesh LCD screen |
msa1992 | 0:4de98c636e60 | 245 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 246 | } |
msa1992 | 0:4de98c636e60 | 247 | |
msa1992 | 0:4de98c636e60 | 248 | |
msa1992 | 0:4de98c636e60 | 249 | |
msa1992 | 0:4de98c636e60 | 250 | |
msa1992 | 0:4de98c636e60 | 251 | |
msa1992 | 0:4de98c636e60 | 252 | |
msa1992 | 0:4de98c636e60 | 253 | /// if ditance is less than 50, set buzzer = 1.0 |
msa1992 | 0:4de98c636e60 | 254 | if(distance < 50) { |
msa1992 | 0:4de98c636e60 | 255 | buzzer = 1.0; |
msa1992 | 0:4de98c636e60 | 256 | buzzer.period_ms(2); |
msa1992 | 0:4de98c636e60 | 257 | wait_ms((distance)+0.0001); |
msa1992 | 0:4de98c636e60 | 258 | buzzer = 0.5; |
msa1992 | 0:4de98c636e60 | 259 | } |
msa1992 | 0:4de98c636e60 | 260 | /// if distance is greater than 50, set buzzer = 0.0 |
msa1992 | 0:4de98c636e60 | 261 | else { |
msa1992 | 0:4de98c636e60 | 262 | buzzer = 0.0; |
msa1992 | 0:4de98c636e60 | 263 | |
msa1992 | 0:4de98c636e60 | 264 | } |
msa1992 | 0:4de98c636e60 | 265 | /// if the condition is valid, print distance in cm |
msa1992 | 0:4de98c636e60 | 266 | if(distance > 50 && buttonFlag == 1) { |
msa1992 | 0:4de98c636e60 | 267 | lcd.clear(); |
msa1992 | 0:4de98c636e60 | 268 | lcd.printString("Safe",30,2); |
msa1992 | 0:4de98c636e60 | 269 | int length = sprintf(buffer,"Dist = %2d Cm",distance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 270 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 271 | |
msa1992 | 0:4de98c636e60 | 272 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 273 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 274 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 275 | } |
msa1992 | 0:4de98c636e60 | 276 | /// if the condition is NOT valid, print distance in m |
msa1992 | 0:4de98c636e60 | 277 | else if(distance > 50 && buttonFlag == 0) { |
msa1992 | 0:4de98c636e60 | 278 | lcd.clear(); |
msa1992 | 0:4de98c636e60 | 279 | lcd.printString("Safe",30,2); |
msa1992 | 0:4de98c636e60 | 280 | int length = sprintf(buffer,"Dist = %.2f m",metreDistance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 281 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 282 | |
msa1992 | 0:4de98c636e60 | 283 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 284 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 285 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 286 | } |
msa1992 | 0:4de98c636e60 | 287 | |
msa1992 | 0:4de98c636e60 | 288 | |
msa1992 | 0:4de98c636e60 | 289 | |
msa1992 | 0:4de98c636e60 | 290 | |
msa1992 | 0:4de98c636e60 | 291 | |
msa1992 | 0:4de98c636e60 | 292 | /// if condition is valid, print "Warning, Defense System On" |
msa1992 | 0:4de98c636e60 | 293 | else if(distance > 20 & distance < 50) { |
msa1992 | 0:4de98c636e60 | 294 | lcd.clear(); |
msa1992 | 0:4de98c636e60 | 295 | lcd.printString("Warning",20,2); |
msa1992 | 0:4de98c636e60 | 296 | lcd.printString("Defence",20,4); |
msa1992 | 0:4de98c636e60 | 297 | lcd.printString("System On",15,5); |
msa1992 | 0:4de98c636e60 | 298 | |
msa1992 | 0:4de98c636e60 | 299 | /// if buttonFlag=0, print distance in cm |
msa1992 | 0:4de98c636e60 | 300 | if(buttonFlag == 0) { //if button is in the unpressed state, print distance in cm |
msa1992 | 0:4de98c636e60 | 301 | int length = sprintf(buffer,"Dist = %2d Cm",distance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 302 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 303 | |
msa1992 | 0:4de98c636e60 | 304 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 305 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 306 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 307 | } |
msa1992 | 0:4de98c636e60 | 308 | /// if buttonFlag = 1, print distance in m |
msa1992 | 0:4de98c636e60 | 309 | else if(buttonFlag == 1) { //print distance in metres if button pressed |
msa1992 | 0:4de98c636e60 | 310 | int length = sprintf(buffer,"Dist = %.2f m",metreDistance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 311 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 312 | |
msa1992 | 0:4de98c636e60 | 313 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 314 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 315 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 316 | } |
msa1992 | 0:4de98c636e60 | 317 | } |
msa1992 | 0:4de98c636e60 | 318 | |
msa1992 | 0:4de98c636e60 | 319 | |
msa1992 | 0:4de98c636e60 | 320 | |
msa1992 | 0:4de98c636e60 | 321 | |
msa1992 | 0:4de98c636e60 | 322 | |
msa1992 | 0:4de98c636e60 | 323 | |
msa1992 | 0:4de98c636e60 | 324 | |
msa1992 | 0:4de98c636e60 | 325 | |
msa1992 | 0:4de98c636e60 | 326 | /// if all if functions Not valid, else will print "Fire" and draw "missile" |
msa1992 | 0:4de98c636e60 | 327 | else { |
msa1992 | 0:4de98c636e60 | 328 | lcd.clear(); |
msa1992 | 0:4de98c636e60 | 329 | lcd.printString("Fire",30,2); |
msa1992 | 0:4de98c636e60 | 330 | rocketDraw(0,0); |
msa1992 | 0:4de98c636e60 | 331 | |
msa1992 | 0:4de98c636e60 | 332 | /// if buttonFlag=0, print distance in cm |
msa1992 | 0:4de98c636e60 | 333 | if(buttonFlag == 0) { //if button is in the unpressed state, print distance in cm |
msa1992 | 0:4de98c636e60 | 334 | int length = sprintf(buffer,"Dist = %2d Cm",distance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 335 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 336 | |
msa1992 | 0:4de98c636e60 | 337 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 338 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 339 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 340 | } |
msa1992 | 0:4de98c636e60 | 341 | /// if buttonFlag = 1, print distance in m |
msa1992 | 0:4de98c636e60 | 342 | else if(buttonFlag == 1) { //print distance in metres if button pressed |
msa1992 | 0:4de98c636e60 | 343 | int length = sprintf(buffer,"Dist = %.2f m",metreDistance); // print formatted data to buffer |
msa1992 | 0:4de98c636e60 | 344 | // it is important the format specifier ensures the length will fit in the buffer |
msa1992 | 0:4de98c636e60 | 345 | |
msa1992 | 0:4de98c636e60 | 346 | if (length <= 14) // if string will fit on display |
msa1992 | 0:4de98c636e60 | 347 | lcd.printString(buffer,0,0); // display on screen |
msa1992 | 0:4de98c636e60 | 348 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 349 | } |
msa1992 | 0:4de98c636e60 | 350 | } |
msa1992 | 0:4de98c636e60 | 351 | /// if distance is less than 50, switch on LED |
msa1992 | 0:4de98c636e60 | 352 | if(distance < 50) { |
msa1992 | 0:4de98c636e60 | 353 | led = 2.0; |
msa1992 | 0:4de98c636e60 | 354 | /// if NOT, keep LED off |
msa1992 | 0:4de98c636e60 | 355 | } else { |
msa1992 | 0:4de98c636e60 | 356 | led = 0.0; |
msa1992 | 0:4de98c636e60 | 357 | |
msa1992 | 0:4de98c636e60 | 358 | } |
msa1992 | 0:4de98c636e60 | 359 | |
msa1992 | 0:4de98c636e60 | 360 | |
msa1992 | 0:4de98c636e60 | 361 | |
msa1992 | 0:4de98c636e60 | 362 | |
msa1992 | 0:4de98c636e60 | 363 | |
msa1992 | 0:4de98c636e60 | 364 | /// referesh the screen |
msa1992 | 0:4de98c636e60 | 365 | lcd.refresh(); |
msa1992 | 0:4de98c636e60 | 366 | /// set brightness to be controlled by the potentiometer |
msa1992 | 0:4de98c636e60 | 367 | lcd.setBrightness(Pot.read()); |
msa1992 | 0:4de98c636e60 | 368 | /// wait for 0.5 seconds |
msa1992 | 0:4de98c636e60 | 369 | wait(0.5); |
msa1992 | 0:4de98c636e60 | 370 | |
msa1992 | 0:4de98c636e60 | 371 | } |
msa1992 | 0:4de98c636e60 | 372 | } |