Super Sensor
Dependencies: N5110 PowerControl SRF02 beep mbed
main.h@0:933481fda425, 2015-05-11 (annotated)
- Committer:
- MuhaiminMokhtar
- Date:
- Mon May 11 22:12:11 2015 +0000
- Revision:
- 0:933481fda425
First commit.; ; All is working fine
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MuhaiminMokhtar | 0:933481fda425 | 1 | /** |
MuhaiminMokhtar | 0:933481fda425 | 2 | @file main.h |
MuhaiminMokhtar | 0:933481fda425 | 3 | @brief Header file containing functions prototypes, define and global variables |
MuhaiminMokhtar | 0:933481fda425 | 4 | @brief coding for embedded device (Project A - Reverse Sensor) |
MuhaiminMokhtar | 0:933481fda425 | 5 | @brief ELEC 2645 |
MuhaiminMokhtar | 0:933481fda425 | 6 | @brief 200906557 |
MuhaiminMokhtar | 0:933481fda425 | 7 | @author Muhammad Muhaimin Mokhtar |
MuhaiminMokhtar | 0:933481fda425 | 8 | @date May 2015 |
MuhaiminMokhtar | 0:933481fda425 | 9 | */ |
MuhaiminMokhtar | 0:933481fda425 | 10 | |
MuhaiminMokhtar | 0:933481fda425 | 11 | //L I B R A R I E S |
MuhaiminMokhtar | 0:933481fda425 | 12 | #include "mbed.h" |
MuhaiminMokhtar | 0:933481fda425 | 13 | #include "N5110.h"//Imported from Dr. Craig A. Evans library |
MuhaiminMokhtar | 0:933481fda425 | 14 | #include "SRF02.h"//Imported from Dr. Craig A. Evans library |
MuhaiminMokhtar | 0:933481fda425 | 15 | #include "beep.h" //Imported from Peter Descher library, , Files at revision 4:d8e14429a95f |
MuhaiminMokhtar | 0:933481fda425 | 16 | #include "PowerControl/PowerControl.h" //Imported from Michael Wei's library |
MuhaiminMokhtar | 0:933481fda425 | 17 | #include "PowerControl/EthernetPowerControl.h"// Imported from Michael Wei's library |
MuhaiminMokhtar | 0:933481fda425 | 18 | |
MuhaiminMokhtar | 0:933481fda425 | 19 | //P I N S |
MuhaiminMokhtar | 0:933481fda425 | 20 | |
MuhaiminMokhtar | 0:933481fda425 | 21 | /** |
MuhaiminMokhtar | 0:933481fda425 | 22 | @namespace N511o lcd |
MuhaiminMokhtar | 0:933481fda425 | 23 | @brief GPIO pins connected to LCD Display |
MuhaiminMokhtar | 0:933481fda425 | 24 | @brief (LCD_VCC,SCE,RST,DC,MOSI,SCK,BACKLIGHT) |
MuhaiminMokhtar | 0:933481fda425 | 25 | */ |
MuhaiminMokhtar | 0:933481fda425 | 26 | N5110 lcd(p7,p8,p9,p10,p11,p13,p26); |
MuhaiminMokhtar | 0:933481fda425 | 27 | /** |
MuhaiminMokhtar | 0:933481fda425 | 28 | @namespace sensor |
MuhaiminMokhtar | 0:933481fda425 | 29 | @brief GPIO pins for SRF02 sensor |
MuhaiminMokhtar | 0:933481fda425 | 30 | @brief (SDA,SCL) |
MuhaiminMokhtar | 0:933481fda425 | 31 | */ |
MuhaiminMokhtar | 0:933481fda425 | 32 | SRF02 sensor(p28,p27); |
MuhaiminMokhtar | 0:933481fda425 | 33 | /** |
MuhaiminMokhtar | 0:933481fda425 | 34 | @namespace red |
MuhaiminMokhtar | 0:933481fda425 | 35 | @brief PWM pin for red led |
MuhaiminMokhtar | 0:933481fda425 | 36 | */ |
MuhaiminMokhtar | 0:933481fda425 | 37 | PwmOut red(p22); |
MuhaiminMokhtar | 0:933481fda425 | 38 | /** |
MuhaiminMokhtar | 0:933481fda425 | 39 | @namespace yellow |
MuhaiminMokhtar | 0:933481fda425 | 40 | @brief PWM pin for yellow led |
MuhaiminMokhtar | 0:933481fda425 | 41 | */ |
MuhaiminMokhtar | 0:933481fda425 | 42 | PwmOut yellow(p23); |
MuhaiminMokhtar | 0:933481fda425 | 43 | /** |
MuhaiminMokhtar | 0:933481fda425 | 44 | @namespace green |
MuhaiminMokhtar | 0:933481fda425 | 45 | @brief PWM pin for green led |
MuhaiminMokhtar | 0:933481fda425 | 46 | */ |
MuhaiminMokhtar | 0:933481fda425 | 47 | PwmOut green(p24); |
MuhaiminMokhtar | 0:933481fda425 | 48 | /** |
MuhaiminMokhtar | 0:933481fda425 | 49 | @namespace button |
MuhaiminMokhtar | 0:933481fda425 | 50 | @brief InterruptIn pin for button |
MuhaiminMokhtar | 0:933481fda425 | 51 | */ |
MuhaiminMokhtar | 0:933481fda425 | 52 | InterruptIn button(p15); |
MuhaiminMokhtar | 0:933481fda425 | 53 | /** |
MuhaiminMokhtar | 0:933481fda425 | 54 | @namespace buzzer |
MuhaiminMokhtar | 0:933481fda425 | 55 | @brief PWM pin for buzzer |
MuhaiminMokhtar | 0:933481fda425 | 56 | */ |
MuhaiminMokhtar | 0:933481fda425 | 57 | Beep buzzer(p21); |
MuhaiminMokhtar | 0:933481fda425 | 58 | /** |
MuhaiminMokhtar | 0:933481fda425 | 59 | @namespace lcdBrightness |
MuhaiminMokhtar | 0:933481fda425 | 60 | @brief AnalogIn pin for LCD backlight |
MuhaiminMokhtar | 0:933481fda425 | 61 | */ |
MuhaiminMokhtar | 0:933481fda425 | 62 | PwmOut lcdBrightness (p26); |
MuhaiminMokhtar | 0:933481fda425 | 63 | /** |
MuhaiminMokhtar | 0:933481fda425 | 64 | @namespace potBrightness |
MuhaiminMokhtar | 0:933481fda425 | 65 | @brief AnalogIn pin for potentiometer |
MuhaiminMokhtar | 0:933481fda425 | 66 | */ |
MuhaiminMokhtar | 0:933481fda425 | 67 | AnalogIn potBrightness (p20); |
MuhaiminMokhtar | 0:933481fda425 | 68 | |
MuhaiminMokhtar | 0:933481fda425 | 69 | //V A R I A B L E S |
MuhaiminMokhtar | 0:933481fda425 | 70 | int distance; /*!<distance between sensor and obstacles*/ |
MuhaiminMokhtar | 0:933481fda425 | 71 | int buttonFlag =0; /*!<print flag set in ISR (Interrupt Service Routine)*/ |
MuhaiminMokhtar | 0:933481fda425 | 72 | int setTimeFlag = 0; /*!<integer to display time on LCD*/ |
MuhaiminMokhtar | 0:933481fda425 | 73 | int displayReading = 0; /*!<integer to display measurement on LCD*/ |
MuhaiminMokhtar | 0:933481fda425 | 74 | |
MuhaiminMokhtar | 0:933481fda425 | 75 | //F U N C T I O N S |
MuhaiminMokhtar | 0:933481fda425 | 76 | |
MuhaiminMokhtar | 0:933481fda425 | 77 | /** Print welcome message |
MuhaiminMokhtar | 0:933481fda425 | 78 | * @param message - print 'WELCOME' |
MuhaiminMokhtar | 0:933481fda425 | 79 | * @param a - set the coordinate for charachter to be print |
MuhaiminMokhtar | 0:933481fda425 | 80 | * @param super - print 'SUPER SENSOR' |
MuhaiminMokhtar | 0:933481fda425 | 81 | * @param mokh - print 'M.MOKH' |
MuhaiminMokhtar | 0:933481fda425 | 82 | * @param number - print '200906557' |
MuhaiminMokhtar | 0:933481fda425 | 83 | */ |
MuhaiminMokhtar | 0:933481fda425 | 84 | void welcomeMessage(); |
MuhaiminMokhtar | 0:933481fda425 | 85 | |
MuhaiminMokhtar | 0:933481fda425 | 86 | /** measure distance between sensor and obstacle |
MuhaiminMokhtar | 0:933481fda425 | 87 | * @param distance - SRF02 measure distance |
MuhaiminMokhtar | 0:933481fda425 | 88 | * @return value of measured distance in cm |
MuhaiminMokhtar | 0:933481fda425 | 89 | */ |
MuhaiminMokhtar | 0:933481fda425 | 90 | void getDistance(); |
MuhaiminMokhtar | 0:933481fda425 | 91 | |
MuhaiminMokhtar | 0:933481fda425 | 92 | /** print car and obstacle figure |
MuhaiminMokhtar | 0:933481fda425 | 93 | * @param lcd.drawRect - draw rectangle shape |
MuhaiminMokhtar | 0:933481fda425 | 94 | * @param lcd.drawCircle - draw circle shape |
MuhaiminMokhtar | 0:933481fda425 | 95 | * @param lcd.printString - print 'DANGER!!' in danger range |
MuhaiminMokhtar | 0:933481fda425 | 96 | * @param lcd.refresh - refresh lcd display |
MuhaiminMokhtar | 0:933481fda425 | 97 | * @param distanceGreen - green led on |
MuhaiminMokhtar | 0:933481fda425 | 98 | * @param distanceYellow - yellow led on |
MuhaiminMokhtar | 0:933481fda425 | 99 | * @param distanceRed - red led on |
MuhaiminMokhtar | 0:933481fda425 | 100 | */ |
MuhaiminMokhtar | 0:933481fda425 | 101 | void readDistance(); |
MuhaiminMokhtar | 0:933481fda425 | 102 | |
MuhaiminMokhtar | 0:933481fda425 | 103 | /** |
MuhaiminMokhtar | 0:933481fda425 | 104 | * distance measured in green range |
MuhaiminMokhtar | 0:933481fda425 | 105 | * only green led lights up |
MuhaiminMokhtar | 0:933481fda425 | 106 | * @param buzzer.beep - buzzer beeping at 1kHz every 1 second |
MuhaiminMokhtar | 0:933481fda425 | 107 | * @param buzzer.nobeep - stop the buzzer instantaneous |
MuhaiminMokhtar | 0:933481fda425 | 108 | * @param wait - wait for 1.5 seconds |
MuhaiminMokhtar | 0:933481fda425 | 109 | */ |
MuhaiminMokhtar | 0:933481fda425 | 110 | void distanceGreen(); |
MuhaiminMokhtar | 0:933481fda425 | 111 | |
MuhaiminMokhtar | 0:933481fda425 | 112 | /** |
MuhaiminMokhtar | 0:933481fda425 | 113 | * distance measured in yellow range |
MuhaiminMokhtar | 0:933481fda425 | 114 | * only yellow led lights up |
MuhaiminMokhtar | 0:933481fda425 | 115 | * @param buzzer.beep - buzzer beeping at 1kHz every 1 second |
MuhaiminMokhtar | 0:933481fda425 | 116 | * @param buzzer.nobeep - stop the buzzer instantaneous |
MuhaiminMokhtar | 0:933481fda425 | 117 | * @param wait - wait for 1.0 second |
MuhaiminMokhtar | 0:933481fda425 | 118 | */ |
MuhaiminMokhtar | 0:933481fda425 | 119 | void distanceYellow(); |
MuhaiminMokhtar | 0:933481fda425 | 120 | |
MuhaiminMokhtar | 0:933481fda425 | 121 | /** |
MuhaiminMokhtar | 0:933481fda425 | 122 | * distance measured in red range |
MuhaiminMokhtar | 0:933481fda425 | 123 | * only red led lights up |
MuhaiminMokhtar | 0:933481fda425 | 124 | * @param buzzer.beep - buzzer beeping at 1kHz every 1 second |
MuhaiminMokhtar | 0:933481fda425 | 125 | * @param buzzer.nobeep - stop the buzzer instantaneous |
MuhaiminMokhtar | 0:933481fda425 | 126 | * @param wait - wait for 0.5 second |
MuhaiminMokhtar | 0:933481fda425 | 127 | */ |
MuhaiminMokhtar | 0:933481fda425 | 128 | void distanceRed(); |
MuhaiminMokhtar | 0:933481fda425 | 129 | |
MuhaiminMokhtar | 0:933481fda425 | 130 | /** |
MuhaiminMokhtar | 0:933481fda425 | 131 | * distance measured in danger range |
MuhaiminMokhtar | 0:933481fda425 | 132 | * only red led lights up |
MuhaiminMokhtar | 0:933481fda425 | 133 | * @param buzzer.beep - buzzer beeping at 1kHz every 1 second |
MuhaiminMokhtar | 0:933481fda425 | 134 | * @param buzzer.nobeep - stop the buzzer instantaneous |
MuhaiminMokhtar | 0:933481fda425 | 135 | * @param wait - wait for 0.1 second |
MuhaiminMokhtar | 0:933481fda425 | 136 | */ |
MuhaiminMokhtar | 0:933481fda425 | 137 | void distanceDanger(); |
MuhaiminMokhtar | 0:933481fda425 | 138 | |
MuhaiminMokhtar | 0:933481fda425 | 139 | /** |
MuhaiminMokhtar | 0:933481fda425 | 140 | *interrupt service routine when button is pressed |
MuhaiminMokhtar | 0:933481fda425 | 141 | * @param buttonFlag - button flag will be set to 1 on rising edge |
MuhaiminMokhtar | 0:933481fda425 | 142 | * |
MuhaiminMokhtar | 0:933481fda425 | 143 | */ |
MuhaiminMokhtar | 0:933481fda425 | 144 | void buttonPressed(); |
MuhaiminMokhtar | 0:933481fda425 | 145 | |
MuhaiminMokhtar | 0:933481fda425 | 146 | /** |
MuhaiminMokhtar | 0:933481fda425 | 147 | * set time and date display on the lcd |
MuhaiminMokhtar | 0:933481fda425 | 148 | * @param buffer - store current time |
MuhaiminMokhtar | 0:933481fda425 | 149 | * @param date - store current date |
MuhaiminMokhtar | 0:933481fda425 | 150 | * @param day - store current day |
MuhaiminMokhtar | 0:933481fda425 | 151 | * @param lcd.printString - print date & time on lcd |
MuhaiminMokhtar | 0:933481fda425 | 152 | */ |
MuhaiminMokhtar | 0:933481fda425 | 153 | void timeZone(); |
MuhaiminMokhtar | 0:933481fda425 | 154 | |
MuhaiminMokhtar | 0:933481fda425 | 155 | //print welcome message |
MuhaiminMokhtar | 0:933481fda425 | 156 | |
MuhaiminMokhtar | 0:933481fda425 | 157 | void welcomeMessage() |
MuhaiminMokhtar | 0:933481fda425 | 158 | { |
MuhaiminMokhtar | 0:933481fda425 | 159 | int a[12] = {0,6,12,18,24,30,36,42,48,54,60,66}; // coordinate of character to be printed on |
MuhaiminMokhtar | 0:933481fda425 | 160 | const char message[7] = {'W','E','L','C','O','M','E'}; |
MuhaiminMokhtar | 0:933481fda425 | 161 | char super[12] = {'S','U','P','E','R',' ','S','E','N','S','O','R'}; |
MuhaiminMokhtar | 0:933481fda425 | 162 | char mokh[9] = {'M','.','M','O','K','H','T','A','R'}; |
MuhaiminMokhtar | 0:933481fda425 | 163 | char number[9] = {'2','0','0','9','0','6','5','5','7'}; |
MuhaiminMokhtar | 0:933481fda425 | 164 | int i; |
MuhaiminMokhtar | 0:933481fda425 | 165 | for(i=0; i<7; i++) { |
MuhaiminMokhtar | 0:933481fda425 | 166 | lcd.printChar(message[i],a[i],0); // character is printed one at a time untill increment is satisfied |
MuhaiminMokhtar | 0:933481fda425 | 167 | wait(0.1); |
MuhaiminMokhtar | 0:933481fda425 | 168 | } |
MuhaiminMokhtar | 0:933481fda425 | 169 | for(i=0; i<12; i++) { |
MuhaiminMokhtar | 0:933481fda425 | 170 | lcd.printChar(super[i],a[i],2); |
MuhaiminMokhtar | 0:933481fda425 | 171 | wait(0.1); // character is printed one at a time untill increment is satisfied |
MuhaiminMokhtar | 0:933481fda425 | 172 | } |
MuhaiminMokhtar | 0:933481fda425 | 173 | for(i=0; i<9; i++) { |
MuhaiminMokhtar | 0:933481fda425 | 174 | lcd.printChar(mokh[i],a[i],4); // character is printed one at a time untill increment is satisfied |
MuhaiminMokhtar | 0:933481fda425 | 175 | wait(0.1); |
MuhaiminMokhtar | 0:933481fda425 | 176 | } |
MuhaiminMokhtar | 0:933481fda425 | 177 | for(i=0; i<9; i++) { |
MuhaiminMokhtar | 0:933481fda425 | 178 | lcd.printChar(number[i],a[i],5); // character is printed one at a time untill increment is satisfied |
MuhaiminMokhtar | 0:933481fda425 | 179 | wait(0.1); |
MuhaiminMokhtar | 0:933481fda425 | 180 | } |
MuhaiminMokhtar | 0:933481fda425 | 181 | wait(4.0); |
MuhaiminMokhtar | 0:933481fda425 | 182 | } |
MuhaiminMokhtar | 0:933481fda425 | 183 | |
MuhaiminMokhtar | 0:933481fda425 | 184 | void getDistance() |
MuhaiminMokhtar | 0:933481fda425 | 185 | { |
MuhaiminMokhtar | 0:933481fda425 | 186 | distance = sensor.getDistanceCm(); |
MuhaiminMokhtar | 0:933481fda425 | 187 | |
MuhaiminMokhtar | 0:933481fda425 | 188 | } |
MuhaiminMokhtar | 0:933481fda425 | 189 | |
MuhaiminMokhtar | 0:933481fda425 | 190 | void readDistance() |
MuhaiminMokhtar | 0:933481fda425 | 191 | { |
MuhaiminMokhtar | 0:933481fda425 | 192 | if(distance>=240) { |
MuhaiminMokhtar | 0:933481fda425 | 193 | lcd.drawRect(0,0,7,48,1); //obstacle (wall) |
MuhaiminMokhtar | 0:933481fda425 | 194 | lcd.drawRect(58,30,20,10,1); //rectangle 1(x,y,width,height,blackfill) |
MuhaiminMokhtar | 0:933481fda425 | 195 | lcd.drawRect(63,22,10,8,1); //rectangle 2 |
MuhaiminMokhtar | 0:933481fda425 | 196 | lcd.drawCircle(63,44,4,1); //circle 1 |
MuhaiminMokhtar | 0:933481fda425 | 197 | lcd.drawCircle(73,44,4,1); //circle 2(x,y,radius,black fill) |
MuhaiminMokhtar | 0:933481fda425 | 198 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 199 | distanceGreen(); |
MuhaiminMokhtar | 0:933481fda425 | 200 | } else if (distance >= 200 & distance <=239) { |
MuhaiminMokhtar | 0:933481fda425 | 201 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 202 | lcd.drawRect(51,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 203 | lcd.drawRect(56,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 204 | lcd.drawCircle(56,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 205 | lcd.drawCircle(66,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 206 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 207 | distanceGreen(); |
MuhaiminMokhtar | 0:933481fda425 | 208 | |
MuhaiminMokhtar | 0:933481fda425 | 209 | } else if (distance >=160 & distance <=199) { |
MuhaiminMokhtar | 0:933481fda425 | 210 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 211 | lcd.drawRect(44,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 212 | lcd.drawRect(49,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 213 | lcd.drawCircle(49,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 214 | lcd.drawCircle(59,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 215 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 216 | distanceGreen(); |
MuhaiminMokhtar | 0:933481fda425 | 217 | } else if (distance >=120 & distance <=159) { |
MuhaiminMokhtar | 0:933481fda425 | 218 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 219 | lcd.drawRect(37,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 220 | lcd.drawRect(42,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 221 | lcd.drawCircle(42,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 222 | lcd.drawCircle(52,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 223 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 224 | distanceYellow(); |
MuhaiminMokhtar | 0:933481fda425 | 225 | } else if (distance >=80 & distance <=119) { |
MuhaiminMokhtar | 0:933481fda425 | 226 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 227 | lcd.drawRect(30,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 228 | lcd.drawRect(35,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 229 | lcd.drawCircle(35,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 230 | lcd.drawCircle(45,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 231 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 232 | distanceYellow(); |
MuhaiminMokhtar | 0:933481fda425 | 233 | } else if (distance >=40 & distance <= 79) { |
MuhaiminMokhtar | 0:933481fda425 | 234 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 235 | lcd.drawRect(23,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 236 | lcd.drawRect(28,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 237 | lcd.drawCircle(28,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 238 | lcd.drawCircle(38,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 239 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 240 | distanceYellow(); |
MuhaiminMokhtar | 0:933481fda425 | 241 | } else if (distance >=25 & distance <=39) { |
MuhaiminMokhtar | 0:933481fda425 | 242 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 243 | lcd.drawRect(16,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 244 | lcd.drawRect(21,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 245 | lcd.drawCircle(21,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 246 | lcd.drawCircle(31,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 247 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 248 | distanceRed(); |
MuhaiminMokhtar | 0:933481fda425 | 249 | } else if (distance <=24) { |
MuhaiminMokhtar | 0:933481fda425 | 250 | lcd.drawRect(0,0,7,48,1); |
MuhaiminMokhtar | 0:933481fda425 | 251 | lcd.drawRect(9,30,20,10,1); |
MuhaiminMokhtar | 0:933481fda425 | 252 | lcd.drawRect(14,22,10,8,1); |
MuhaiminMokhtar | 0:933481fda425 | 253 | lcd.drawCircle(14,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 254 | lcd.drawCircle(24,44,4,1); |
MuhaiminMokhtar | 0:933481fda425 | 255 | lcd.printString("DANGER!!",32,5); //'DANGER!!' is printed at par with car figure |
MuhaiminMokhtar | 0:933481fda425 | 256 | lcd.refresh(); |
MuhaiminMokhtar | 0:933481fda425 | 257 | distanceDanger(); |
MuhaiminMokhtar | 0:933481fda425 | 258 | |
MuhaiminMokhtar | 0:933481fda425 | 259 | |
MuhaiminMokhtar | 0:933481fda425 | 260 | } |
MuhaiminMokhtar | 0:933481fda425 | 261 | } |
MuhaiminMokhtar | 0:933481fda425 | 262 | |
MuhaiminMokhtar | 0:933481fda425 | 263 | // car is in green range distance (safe) |
MuhaiminMokhtar | 0:933481fda425 | 264 | void distanceGreen() |
MuhaiminMokhtar | 0:933481fda425 | 265 | { |
MuhaiminMokhtar | 0:933481fda425 | 266 | red = 0; |
MuhaiminMokhtar | 0:933481fda425 | 267 | yellow = 0; |
MuhaiminMokhtar | 0:933481fda425 | 268 | green = 1; //only green led is lights up |
MuhaiminMokhtar | 0:933481fda425 | 269 | buzzer.beep(1000,1); |
MuhaiminMokhtar | 0:933481fda425 | 270 | wait (1.5); |
MuhaiminMokhtar | 0:933481fda425 | 271 | buzzer.nobeep(); |
MuhaiminMokhtar | 0:933481fda425 | 272 | } |
MuhaiminMokhtar | 0:933481fda425 | 273 | //car is in yellow range distance (cautious) |
MuhaiminMokhtar | 0:933481fda425 | 274 | void distanceYellow() |
MuhaiminMokhtar | 0:933481fda425 | 275 | { |
MuhaiminMokhtar | 0:933481fda425 | 276 | red = 0; |
MuhaiminMokhtar | 0:933481fda425 | 277 | yellow = 1; //only yellow led is lights up |
MuhaiminMokhtar | 0:933481fda425 | 278 | green = 0; |
MuhaiminMokhtar | 0:933481fda425 | 279 | buzzer.beep(1000,1); |
MuhaiminMokhtar | 0:933481fda425 | 280 | wait (1.0); |
MuhaiminMokhtar | 0:933481fda425 | 281 | buzzer.nobeep(); |
MuhaiminMokhtar | 0:933481fda425 | 282 | } |
MuhaiminMokhtar | 0:933481fda425 | 283 | //when car is in red ange distance (prepare to stop) |
MuhaiminMokhtar | 0:933481fda425 | 284 | void distanceRed() |
MuhaiminMokhtar | 0:933481fda425 | 285 | { |
MuhaiminMokhtar | 0:933481fda425 | 286 | red = 1; //only red led is lights up |
MuhaiminMokhtar | 0:933481fda425 | 287 | yellow = 0; |
MuhaiminMokhtar | 0:933481fda425 | 288 | green = 0; |
MuhaiminMokhtar | 0:933481fda425 | 289 | buzzer.beep(1000,1); |
MuhaiminMokhtar | 0:933481fda425 | 290 | wait (0.5); |
MuhaiminMokhtar | 0:933481fda425 | 291 | buzzer.nobeep(); |
MuhaiminMokhtar | 0:933481fda425 | 292 | } |
MuhaiminMokhtar | 0:933481fda425 | 293 | |
MuhaiminMokhtar | 0:933481fda425 | 294 | //when car is in danger range distance (no longer safe to reverse) |
MuhaiminMokhtar | 0:933481fda425 | 295 | void distanceDanger() |
MuhaiminMokhtar | 0:933481fda425 | 296 | { |
MuhaiminMokhtar | 0:933481fda425 | 297 | red = 1; // only red led is lights up |
MuhaiminMokhtar | 0:933481fda425 | 298 | yellow = 0; |
MuhaiminMokhtar | 0:933481fda425 | 299 | green = 0; |
MuhaiminMokhtar | 0:933481fda425 | 300 | buzzer.beep(1000,1); |
MuhaiminMokhtar | 0:933481fda425 | 301 | wait (0.1); |
MuhaiminMokhtar | 0:933481fda425 | 302 | buzzer.nobeep(); |
MuhaiminMokhtar | 0:933481fda425 | 303 | } |
MuhaiminMokhtar | 0:933481fda425 | 304 | |
MuhaiminMokhtar | 0:933481fda425 | 305 | void buttonPressed() |
MuhaiminMokhtar | 0:933481fda425 | 306 | { |
MuhaiminMokhtar | 0:933481fda425 | 307 | buttonFlag = 1; // interrupt service routine |
MuhaiminMokhtar | 0:933481fda425 | 308 | } |
MuhaiminMokhtar | 0:933481fda425 | 309 | //display and store time |
MuhaiminMokhtar | 0:933481fda425 | 310 | void timeZone() |
MuhaiminMokhtar | 0:933481fda425 | 311 | { |
MuhaiminMokhtar | 0:933481fda425 | 312 | |
MuhaiminMokhtar | 0:933481fda425 | 313 | time_t seconds = time(NULL); // get current time |
MuhaiminMokhtar | 0:933481fda425 | 314 | // format time into a string (time and date) |
MuhaiminMokhtar | 0:933481fda425 | 315 | char buffer [30]; |
MuhaiminMokhtar | 0:933481fda425 | 316 | char date [30]; |
MuhaiminMokhtar | 0:933481fda425 | 317 | char day [30]; |
MuhaiminMokhtar | 0:933481fda425 | 318 | strftime(buffer, 30 , "%r ", localtime(&seconds)); |
MuhaiminMokhtar | 0:933481fda425 | 319 | strftime(date, 30, "%F", localtime(&seconds)); |
MuhaiminMokhtar | 0:933481fda425 | 320 | strftime (day, 30, "%A", localtime(&seconds)); |
MuhaiminMokhtar | 0:933481fda425 | 321 | // print over serial |
MuhaiminMokhtar | 0:933481fda425 | 322 | lcd.printString (buffer,10,3); |
MuhaiminMokhtar | 0:933481fda425 | 323 | lcd.printString (date,15,4); |
MuhaiminMokhtar | 0:933481fda425 | 324 | lcd.printString (day, 25, 5); |
MuhaiminMokhtar | 0:933481fda425 | 325 | wait(1.0); // delay for a second |
MuhaiminMokhtar | 0:933481fda425 | 326 | lcd.clear(); |
MuhaiminMokhtar | 0:933481fda425 | 327 | } |