Uses the SRF02 UDS and displays distance in a variety of ways on the N5110 LCD.
Dependencies: N5110WN PowerControl SRF02 mbed
main.h@5:f9b97f057836, 2015-04-08 (annotated)
- Committer:
- JakBlackburn
- Date:
- Wed Apr 08 19:54:03 2015 +0000
- Revision:
- 5:f9b97f057836
- Parent:
- 4:2e9aa626a02c
- Child:
- 6:a5cd7eb72264
Created a new member for the Speaker.h which creates a continuous note.; (See ContNote).; replaced waits in the scan speed with timers;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JakBlackburn | 1:7f151ab172cb | 1 | /** |
JakBlackburn | 1:7f151ab172cb | 2 | @file main.h |
JakBlackburn | 1:7f151ab172cb | 3 | @brief Header file containng function prototypes, defines and global variables. |
JakBlackburn | 1:7f151ab172cb | 4 | @brief Shows a Ultra-sonic Distance Sensor |
JakBlackburn | 1:7f151ab172cb | 5 | @author Jakobi Blackburn |
JakBlackburn | 1:7f151ab172cb | 6 | @date 13 March 2015 |
JakBlackburn | 1:7f151ab172cb | 7 | */ |
JakBlackburn | 1:7f151ab172cb | 8 | #ifndef MAIN_H |
JakBlackburn | 1:7f151ab172cb | 9 | #define MAIN_H |
JakBlackburn | 1:7f151ab172cb | 10 | |
JakBlackburn | 1:7f151ab172cb | 11 | #define PI 3.14159265359 |
JakBlackburn | 1:7f151ab172cb | 12 | |
JakBlackburn | 1:7f151ab172cb | 13 | #include "mbed.h" |
JakBlackburn | 1:7f151ab172cb | 14 | #include "PowerControl/PowerControl.h" |
JakBlackburn | 1:7f151ab172cb | 15 | #include "PowerControl/EthernetPowerControl.h" |
JakBlackburn | 1:7f151ab172cb | 16 | #include "Speaker.h" |
JakBlackburn | 1:7f151ab172cb | 17 | #include "N5110.h" |
JakBlackburn | 1:7f151ab172cb | 18 | #include "SRF02/SRF02.h" |
JakBlackburn | 1:7f151ab172cb | 19 | |
JakBlackburn | 1:7f151ab172cb | 20 | // Inputs |
JakBlackburn | 1:7f151ab172cb | 21 | /** |
JakBlackburn | 1:7f151ab172cb | 22 | @namespace UnitTog |
JakBlackburn | 1:7f151ab172cb | 23 | @brief An Interrupt button that toggles the Unit |
JakBlackburn | 1:7f151ab172cb | 24 | */ |
JakBlackburn | 1:7f151ab172cb | 25 | InterruptIn UnitTog(p14); |
JakBlackburn | 5:f9b97f057836 | 26 | |
JakBlackburn | 1:7f151ab172cb | 27 | /** |
JakBlackburn | 1:7f151ab172cb | 28 | @namespace LogTog |
JakBlackburn | 1:7f151ab172cb | 29 | @brief An Interrupt button that toggles the Logging Capabilities |
JakBlackburn | 1:7f151ab172cb | 30 | */ |
JakBlackburn | 1:7f151ab172cb | 31 | InterruptIn LogTog(p16); |
JakBlackburn | 1:7f151ab172cb | 32 | /** |
JakBlackburn | 1:7f151ab172cb | 33 | @namespace VisTog |
JakBlackburn | 1:7f151ab172cb | 34 | @brief An Interrupt button that changes the visual representation of the data |
JakBlackburn | 1:7f151ab172cb | 35 | */ |
JakBlackburn | 1:7f151ab172cb | 36 | InterruptIn VisTog(p17); |
JakBlackburn | 1:7f151ab172cb | 37 | /** |
JakBlackburn | 1:7f151ab172cb | 38 | @namespace BuzVol |
JakBlackburn | 1:7f151ab172cb | 39 | @brief An Analogue input (Potentiometer) that is used to change the volume of the buzzer |
JakBlackburn | 1:7f151ab172cb | 40 | */ |
JakBlackburn | 1:7f151ab172cb | 41 | AnalogIn BuzVol(p19); |
JakBlackburn | 1:7f151ab172cb | 42 | /** |
JakBlackburn | 1:7f151ab172cb | 43 | @namespace BLEDLevel |
JakBlackburn | 1:7f151ab172cb | 44 | @brief An Analogue input (Potentiometer) that is used to change the backlight of the LCD screen |
JakBlackburn | 1:7f151ab172cb | 45 | */ |
JakBlackburn | 1:7f151ab172cb | 46 | AnalogIn BLEDLevel(p20); |
JakBlackburn | 1:7f151ab172cb | 47 | /** |
JakBlackburn | 1:7f151ab172cb | 48 | @namespace sensor |
JakBlackburn | 1:7f151ab172cb | 49 | @brief Ultra-Sonic distance sensor requires SDA and SCL lines |
JakBlackburn | 1:7f151ab172cb | 50 | */ |
JakBlackburn | 1:7f151ab172cb | 51 | SRF02 sensor(p28,p27);//SDA SCL |
JakBlackburn | 1:7f151ab172cb | 52 | |
JakBlackburn | 1:7f151ab172cb | 53 | // Outputs |
JakBlackburn | 1:7f151ab172cb | 54 | /** |
JakBlackburn | 1:7f151ab172cb | 55 | @namespace N5110 LCD |
JakBlackburn | 1:7f151ab172cb | 56 | @brief An LCD screen that requires |
JakBlackburn | 1:7f151ab172cb | 57 | @brief Pinout VCC,SCE,RST,D/C,MOSI,SCLK,LED |
JakBlackburn | 1:7f151ab172cb | 58 | */ |
JakBlackburn | 1:7f151ab172cb | 59 | N5110 lcd(p7,p8,p9,p10,p11,p13,p26); |
JakBlackburn | 1:7f151ab172cb | 60 | /** |
JakBlackburn | 1:7f151ab172cb | 61 | @namespace Buzzer |
JakBlackburn | 1:7f151ab172cb | 62 | @brief A buzzer that can produce different notes dependant on the frquency of the signal inputted to it. Used as an |
JakBlackburn | 1:7f151ab172cb | 63 | */ |
JakBlackburn | 1:7f151ab172cb | 64 | Speaker Buzzer(p18); |
JakBlackburn | 1:7f151ab172cb | 65 | /** |
JakBlackburn | 1:7f151ab172cb | 66 | @namespace BLED |
JakBlackburn | 1:7f151ab172cb | 67 | @brief The backlight of the LCD screen. Brightness can be changed via Pulse Width Modulation |
JakBlackburn | 1:7f151ab172cb | 68 | */ |
JakBlackburn | 1:7f151ab172cb | 69 | PwmOut BLED(p26); |
JakBlackburn | 1:7f151ab172cb | 70 | /** |
JakBlackburn | 1:7f151ab172cb | 71 | @namespace WLED |
JakBlackburn | 1:7f151ab172cb | 72 | @brief A LED used as visual warning |
JakBlackburn | 1:7f151ab172cb | 73 | */ |
JakBlackburn | 1:7f151ab172cb | 74 | DigitalOut WLED(p21); |
JakBlackburn | 1:7f151ab172cb | 75 | /** |
JakBlackburn | 1:7f151ab172cb | 76 | @namespace LLED |
JakBlackburn | 1:7f151ab172cb | 77 | @brief A LED used to show Logging is off/on |
JakBlackburn | 1:7f151ab172cb | 78 | */ |
JakBlackburn | 1:7f151ab172cb | 79 | DigitalOut LLED(p29); |
JakBlackburn | 1:7f151ab172cb | 80 | /** |
JakBlackburn | 1:7f151ab172cb | 81 | @namespace pc |
JakBlackburn | 1:7f151ab172cb | 82 | @brief Serial output used mainly for debugging. |
JakBlackburn | 1:7f151ab172cb | 83 | @brief Pinout TX, RX |
JakBlackburn | 1:7f151ab172cb | 84 | */ |
JakBlackburn | 1:7f151ab172cb | 85 | Serial pc(USBTX,USBRX);// the tx and rx respectively |
JakBlackburn | 1:7f151ab172cb | 86 | /** |
JakBlackburn | 1:7f151ab172cb | 87 | @namespace leds |
JakBlackburn | 1:7f151ab172cb | 88 | @brief leds used to display error messages and when the file is being written too |
JakBlackburn | 1:7f151ab172cb | 89 | */ |
JakBlackburn | 1:7f151ab172cb | 90 | BusOut leds(LED4,LED3,LED2,LED1); |
JakBlackburn | 1:7f151ab172cb | 91 | |
JakBlackburn | 1:7f151ab172cb | 92 | |
JakBlackburn | 1:7f151ab172cb | 93 | // ---- Variables ---- |
JakBlackburn | 1:7f151ab172cb | 94 | |
JakBlackburn | 1:7f151ab172cb | 95 | float volume=1; /*!< float used to vary the volume */ |
JakBlackburn | 1:7f151ab172cb | 96 | int distance; /*!< integer that stores the distance */ |
JakBlackburn | 1:7f151ab172cb | 97 | float unitX=1; /*!< Float that stores the unit multiple if 1 unit is cm, 0.01 = m, 10 = mm */ |
JakBlackburn | 3:00933efbe463 | 98 | const char *units ="cm"; /*!< string of characters that stores the unit */ |
JakBlackburn | 3:00933efbe463 | 99 | int visual =0;/*!< integer that stores the visual display mode */ |
JakBlackburn | 1:7f151ab172cb | 100 | |
JakBlackburn | 1:7f151ab172cb | 101 | // ---- Flags ---- |
JakBlackburn | 1:7f151ab172cb | 102 | int timerFlag=0; /*!< flag used to trigger the timer ISR */ |
JakBlackburn | 5:f9b97f057836 | 103 | int timer2Flag=0; /*!< flag used to trigger the 2nd timer ISR */ |
JakBlackburn | 5:f9b97f057836 | 104 | int timer3Flag=0; /*!< flag used to trigger the 3nd timer ISR */ |
JakBlackburn | 1:7f151ab172cb | 105 | int setTimeFlag = 0; /*!< flag for ISR for setting time */ |
JakBlackburn | 1:7f151ab172cb | 106 | int logButtonFlag = 0; /*!<flag for button toggle */ |
JakBlackburn | 1:7f151ab172cb | 107 | |
JakBlackburn | 1:7f151ab172cb | 108 | // ---- MISC ---- |
JakBlackburn | 5:f9b97f057836 | 109 | char buffer[30]; /*!<buffer used to store time string */ |
JakBlackburn | 3:00933efbe463 | 110 | char rxString[16]; /*!< buffer to store received string */ |
JakBlackburn | 3:00933efbe463 | 111 | LocalFileSystem local("local"); /*!< create local filesystem */ |
JakBlackburn | 1:7f151ab172cb | 112 | |
JakBlackburn | 5:f9b97f057836 | 113 | Ticker timer; /*!< timer for first speed */ |
JakBlackburn | 5:f9b97f057836 | 114 | Ticker timer2;/*!< timer for second speed */ |
JakBlackburn | 5:f9b97f057836 | 115 | Ticker timer3;/*!< timer for third speed */ |
JakBlackburn | 1:7f151ab172cb | 116 | |
JakBlackburn | 1:7f151ab172cb | 117 | // ---- functions ---- |
JakBlackburn | 5:f9b97f057836 | 118 | |
JakBlackburn | 5:f9b97f057836 | 119 | void theMain(); |
JakBlackburn | 1:7f151ab172cb | 120 | /** |
JakBlackburn | 1:7f151ab172cb | 121 | deals with the visual and audiable alerts. |
JakBlackburn | 1:7f151ab172cb | 122 | */ |
JakBlackburn | 1:7f151ab172cb | 123 | void warnings(); |
JakBlackburn | 1:7f151ab172cb | 124 | /** |
JakBlackburn | 1:7f151ab172cb | 125 | takes 10 distances and averages them. |
JakBlackburn | 1:7f151ab172cb | 126 | @returns The distance between the Sensor and the nearest object infront of it |
JakBlackburn | 1:7f151ab172cb | 127 | */ |
JakBlackburn | 1:7f151ab172cb | 128 | float getDistance(); |
JakBlackburn | 1:7f151ab172cb | 129 | /** |
JakBlackburn | 1:7f151ab172cb | 130 | changes the units cm/m/mm |
JakBlackburn | 1:7f151ab172cb | 131 | */ |
JakBlackburn | 3:00933efbe463 | 132 | void unitToggle(); |
JakBlackburn | 3:00933efbe463 | 133 | /** |
JakBlackburn | 3:00933efbe463 | 134 | changes the visual display |
JakBlackburn | 3:00933efbe463 | 135 | */ |
JakBlackburn | 3:00933efbe463 | 136 | void visToggle(); |
JakBlackburn | 1:7f151ab172cb | 137 | /** |
JakBlackburn | 1:7f151ab172cb | 138 | ISR used for the timer |
JakBlackburn | 1:7f151ab172cb | 139 | */ |
JakBlackburn | 1:7f151ab172cb | 140 | void timerExpired(); |
JakBlackburn | 1:7f151ab172cb | 141 | /** |
JakBlackburn | 5:f9b97f057836 | 142 | ISR used for the 2nd timer |
JakBlackburn | 1:7f151ab172cb | 143 | */ |
JakBlackburn | 5:f9b97f057836 | 144 | void timer2Expired(); |
JakBlackburn | 5:f9b97f057836 | 145 | /** |
JakBlackburn | 5:f9b97f057836 | 146 | ISR used for the 3rd timer |
JakBlackburn | 5:f9b97f057836 | 147 | */ |
JakBlackburn | 5:f9b97f057836 | 148 | void timer3Expired(); |
JakBlackburn | 5:f9b97f057836 | 149 | |
JakBlackburn | 1:7f151ab172cb | 150 | /** |
JakBlackburn | 1:7f151ab172cb | 151 | Displays an error message on the Mbed LEDs |
JakBlackburn | 3:00933efbe463 | 152 | @brief The error message show is up to 14. IF 15 shown it is a ack bit error for the SRF02 |
JakBlackburn | 1:7f151ab172cb | 153 | @param E - Error Code |
JakBlackburn | 3:00933efbe463 | 154 | @returns flashing Mbed LEDs signifying the error |
JakBlackburn | 1:7f151ab172cb | 155 | */ |
JakBlackburn | 1:7f151ab172cb | 156 | void error(int E); |
JakBlackburn | 3:00933efbe463 | 157 | /** |
JakBlackburn | 4:2e9aa626a02c | 158 | ISR for the LOGTOG button Toggling |
JakBlackburn | 4:2e9aa626a02c | 159 | @brief logging Capabilities |
JakBlackburn | 3:00933efbe463 | 160 | */ |
JakBlackburn | 4:2e9aa626a02c | 161 | void logToggle(); |
JakBlackburn | 3:00933efbe463 | 162 | /** |
JakBlackburn | 4:2e9aa626a02c | 163 | Takes the time and temperature value |
JakBlackburn | 4:2e9aa626a02c | 164 | @brief and inserts them into a CSV file |
JakBlackburn | 4:2e9aa626a02c | 165 | @param char* data |
JakBlackburn | 4:2e9aa626a02c | 166 | @param float data1 |
JakBlackburn | 3:00933efbe463 | 167 | */ |
JakBlackburn | 3:00933efbe463 | 168 | void logging(char* data,float data1); |
JakBlackburn | 3:00933efbe463 | 169 | /** |
JakBlackburn | 3:00933efbe463 | 170 | ISR for the serial port |
JakBlackburn | 3:00933efbe463 | 171 | */ |
JakBlackburn | 3:00933efbe463 | 172 | void serialISR(); |
JakBlackburn | 3:00933efbe463 | 173 | /** |
JakBlackburn | 3:00933efbe463 | 174 | function to set the UNIX time |
JakBlackburn | 3:00933efbe463 | 175 | */ |
JakBlackburn | 3:00933efbe463 | 176 | void setTime(); |
JakBlackburn | 3:00933efbe463 | 177 | /** |
JakBlackburn | 3:00933efbe463 | 178 | Plays a set of frequencies through the buzzer creating a tune |
JakBlackburn | 3:00933efbe463 | 179 | */ |
JakBlackburn | 3:00933efbe463 | 180 | void introTune(); |
JakBlackburn | 3:00933efbe463 | 181 | /** |
JakBlackburn | 3:00933efbe463 | 182 | sets every other pixel on, creating a checkerboard like effect |
JakBlackburn | 3:00933efbe463 | 183 | */ |
JakBlackburn | 3:00933efbe463 | 184 | void checkerBoard(); |
JakBlackburn | 3:00933efbe463 | 185 | /** |
JakBlackburn | 3:00933efbe463 | 186 | sets the parameters for the first visual mode |
JakBlackburn | 3:00933efbe463 | 187 | */ |
JakBlackburn | 3:00933efbe463 | 188 | void LCDVis0(); |
JakBlackburn | 3:00933efbe463 | 189 | /** |
JakBlackburn | 3:00933efbe463 | 190 | sets the parameters for the second visual mode |
JakBlackburn | 3:00933efbe463 | 191 | */ |
JakBlackburn | 3:00933efbe463 | 192 | void LCDVis1(); |
JakBlackburn | 3:00933efbe463 | 193 | /** |
JakBlackburn | 3:00933efbe463 | 194 | sets the parameters for the third visual mode |
JakBlackburn | 3:00933efbe463 | 195 | */ |
JakBlackburn | 3:00933efbe463 | 196 | void LCDVis2(); |
JakBlackburn | 4:2e9aa626a02c | 197 | /** |
JakBlackburn | 4:2e9aa626a02c | 198 | sets the parameters for the fourth visual mode |
JakBlackburn | 4:2e9aa626a02c | 199 | */ |
JakBlackburn | 4:2e9aa626a02c | 200 | void LCDVis3(); |
JakBlackburn | 4:2e9aa626a02c | 201 | /** |
JakBlackburn | 4:2e9aa626a02c | 202 | sets a image of a car in pixels |
JakBlackburn | 4:2e9aa626a02c | 203 | */ |
JakBlackburn | 4:2e9aa626a02c | 204 | void car(); |
JakBlackburn | 1:7f151ab172cb | 205 | |
JakBlackburn | 1:7f151ab172cb | 206 | typedef const struct State STyp; /*!< defines the struct type */ |
JakBlackburn | 1:7f151ab172cb | 207 | /** |
JakBlackburn | 1:7f151ab172cb | 208 | Sets the struct |
JakBlackburn | 1:7f151ab172cb | 209 | */ |
JakBlackburn | 1:7f151ab172cb | 210 | struct State { |
JakBlackburn | 1:7f151ab172cb | 211 | float unitMultiple; /*!< float that stores the unit mulitple */ |
JakBlackburn | 2:a1eaa4d74b63 | 212 | const char *Unit; /*!<stores the sting value of the unit */ |
JakBlackburn | 1:7f151ab172cb | 213 | int nextState[2]; /*!< array of next states */ |
JakBlackburn | 1:7f151ab172cb | 214 | }; |
JakBlackburn | 1:7f151ab172cb | 215 | |
JakBlackburn | 1:7f151ab172cb | 216 | /** |
JakBlackburn | 1:7f151ab172cb | 217 | @brief sets the Finite State Machine for the Unit toggle. |
JakBlackburn | 1:7f151ab172cb | 218 | */ |
JakBlackburn | 1:7f151ab172cb | 219 | STyp fsm[3] = { |
JakBlackburn | 2:a1eaa4d74b63 | 220 | {1,"cm",{0,1}}, /*!< State 0: stays in the current state unless input is recieved */ |
JakBlackburn | 2:a1eaa4d74b63 | 221 | {0.01,"m",{1,2}}, /*!< State 1: stays in the current state unless input is recieved */ |
JakBlackburn | 2:a1eaa4d74b63 | 222 | {10,"mm",{2,0}} /*!< State 2: stays in the current state unless input is recieved */ |
JakBlackburn | 1:7f151ab172cb | 223 | }; |
JakBlackburn | 1:7f151ab172cb | 224 | int state=0;/*!< sets the initial state */ |
JakBlackburn | 1:7f151ab172cb | 225 | |
JakBlackburn | 3:00933efbe463 | 226 | typedef const struct VState VSTyp; /*!< defines the struct type */ |
JakBlackburn | 3:00933efbe463 | 227 | /** |
JakBlackburn | 3:00933efbe463 | 228 | Sets the struct |
JakBlackburn | 3:00933efbe463 | 229 | */ |
JakBlackburn | 3:00933efbe463 | 230 | struct VState { |
JakBlackburn | 3:00933efbe463 | 231 | int visual; /*!< integer that stores the visual mode */ |
JakBlackburn | 3:00933efbe463 | 232 | int nextState[2]; /*!< array of next states */ |
JakBlackburn | 3:00933efbe463 | 233 | }; |
JakBlackburn | 3:00933efbe463 | 234 | |
JakBlackburn | 3:00933efbe463 | 235 | /** |
JakBlackburn | 3:00933efbe463 | 236 | @brief sets the Finite State Machine for the Visual toggle. |
JakBlackburn | 3:00933efbe463 | 237 | */ |
JakBlackburn | 4:2e9aa626a02c | 238 | VSTyp Vfsm[4] = { |
JakBlackburn | 3:00933efbe463 | 239 | {0,{0,1}}, /*!< State 0: stays in the current state unless input is recieved */ |
JakBlackburn | 3:00933efbe463 | 240 | {1,{1,2}}, /*!< State 1: stays in the current state unless input is recieved */ |
JakBlackburn | 4:2e9aa626a02c | 241 | {2,{2,3}}, /*!< State 2: stays in the current state unless input is recieved */ |
JakBlackburn | 4:2e9aa626a02c | 242 | {3,{3,0}} /*!< State 3: stays in the current state unless input is recieved */ |
JakBlackburn | 3:00933efbe463 | 243 | }; |
JakBlackburn | 3:00933efbe463 | 244 | int Vstate=0;/*!< sets the initial state */ |
JakBlackburn | 3:00933efbe463 | 245 | |
JakBlackburn | 3:00933efbe463 | 246 | |
JakBlackburn | 3:00933efbe463 | 247 | |
JakBlackburn | 1:7f151ab172cb | 248 | |
JakBlackburn | 1:7f151ab172cb | 249 | |
JakBlackburn | 1:7f151ab172cb | 250 | #endif |
JakBlackburn | 1:7f151ab172cb | 251 | |
JakBlackburn | 1:7f151ab172cb | 252 |