
My take on the obligatory Hello World app for the FRD-KL25Z platform. This app shows off some of the onboard peripherals. I have commented a chunk of the code, and will work to revise this to add more commenting of all sub-routines.
Dependencies: FRDM_MMA8451Q TSI mbed
main.cpp@0:216148fa726d, 2014-06-26 (annotated)
- Committer:
- milspect18
- Date:
- Thu Jun 26 15:11:39 2014 +0000
- Revision:
- 0:216148fa726d
- Child:
- 1:6a1079e4e6ab
Added the full morse code method set
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
milspect18 | 0:216148fa726d | 1 | #include "mbed.h" |
milspect18 | 0:216148fa726d | 2 | #include "TSISensor.h" |
milspect18 | 0:216148fa726d | 3 | #include "MMA8451Q.h" |
milspect18 | 0:216148fa726d | 4 | |
milspect18 | 0:216148fa726d | 5 | |
milspect18 | 0:216148fa726d | 6 | // This is the default address as specified by the mfg |
milspect18 | 0:216148fa726d | 7 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
milspect18 | 0:216148fa726d | 8 | |
milspect18 | 0:216148fa726d | 9 | |
milspect18 | 0:216148fa726d | 10 | PwmOut myRedLed(LED1); |
milspect18 | 0:216148fa726d | 11 | PwmOut myGreenLed(LED2); |
milspect18 | 0:216148fa726d | 12 | PwmOut myBlueLed(LED3); |
milspect18 | 0:216148fa726d | 13 | PwmOut externalLight(D0); |
milspect18 | 0:216148fa726d | 14 | |
milspect18 | 0:216148fa726d | 15 | MMA8451Q accel(PTE25, PTE24, MMA8451_I2C_ADDRESS); // 3-axis MEMS accelerometer. |
milspect18 | 0:216148fa726d | 16 | TSISensor touchSlider; // Capacitive touch sensor, defined as touchSlider. |
milspect18 | 0:216148fa726d | 17 | |
milspect18 | 0:216148fa726d | 18 | //Function forward declarations |
milspect18 | 0:216148fa726d | 19 | void AccelDemo(); |
milspect18 | 0:216148fa726d | 20 | void SliderFadeTimeDemo(); |
milspect18 | 0:216148fa726d | 21 | void TouchFadeIn(float val); |
milspect18 | 0:216148fa726d | 22 | void TouchFadeOut(float val); |
milspect18 | 0:216148fa726d | 23 | |
milspect18 | 0:216148fa726d | 24 | // |
milspect18 | 0:216148fa726d | 25 | // The following prototypes are all related to the morse code blinking. |
milspect18 | 0:216148fa726d | 26 | // |
milspect18 | 0:216148fa726d | 27 | void morseCodeBlinker(char input[], float speed); |
milspect18 | 0:216148fa726d | 28 | void SendLetter(char input, float speed); |
milspect18 | 0:216148fa726d | 29 | void WordSpace(float speed); |
milspect18 | 0:216148fa726d | 30 | void LetterSpace(float speed); |
milspect18 | 0:216148fa726d | 31 | void Dash(float speed); |
milspect18 | 0:216148fa726d | 32 | void Dot(float speed); |
milspect18 | 0:216148fa726d | 33 | |
milspect18 | 0:216148fa726d | 34 | |
milspect18 | 0:216148fa726d | 35 | //Main constructor |
milspect18 | 0:216148fa726d | 36 | int main() |
milspect18 | 0:216148fa726d | 37 | { |
milspect18 | 0:216148fa726d | 38 | // Blink the LED's to morse code "HELLO WORLD" |
milspect18 | 0:216148fa726d | 39 | morseCodeBlinker("How are you", 0.25f); |
milspect18 | 0:216148fa726d | 40 | |
milspect18 | 0:216148fa726d | 41 | |
milspect18 | 0:216148fa726d | 42 | while (1) |
milspect18 | 0:216148fa726d | 43 | { |
milspect18 | 0:216148fa726d | 44 | // In the infinite loop of Main, we check to see if the touch slider is being touched |
milspect18 | 0:216148fa726d | 45 | // and if it is we call the touch slider demo function |
milspect18 | 0:216148fa726d | 46 | // if it is not we will be performing the accelerometer demo function |
milspect18 | 0:216148fa726d | 47 | if (touchSlider.readDistance() > 1) |
milspect18 | 0:216148fa726d | 48 | { |
milspect18 | 0:216148fa726d | 49 | SliderFadeTimeDemo(); |
milspect18 | 0:216148fa726d | 50 | } |
milspect18 | 0:216148fa726d | 51 | else |
milspect18 | 0:216148fa726d | 52 | { |
milspect18 | 0:216148fa726d | 53 | AccelDemo(); |
milspect18 | 0:216148fa726d | 54 | } |
milspect18 | 0:216148fa726d | 55 | } |
milspect18 | 0:216148fa726d | 56 | |
milspect18 | 0:216148fa726d | 57 | } |
milspect18 | 0:216148fa726d | 58 | |
milspect18 | 0:216148fa726d | 59 | |
milspect18 | 0:216148fa726d | 60 | |
milspect18 | 0:216148fa726d | 61 | void SliderFadeTimeDemo() |
milspect18 | 0:216148fa726d | 62 | { |
milspect18 | 0:216148fa726d | 63 | float val = 0.00f; |
milspect18 | 0:216148fa726d | 64 | |
milspect18 | 0:216148fa726d | 65 | if (touchSlider.readDistance() > 2) |
milspect18 | 0:216148fa726d | 66 | { |
milspect18 | 0:216148fa726d | 67 | val = touchSlider.readDistance() * 0.5f; |
milspect18 | 0:216148fa726d | 68 | TouchFadeIn(val); |
milspect18 | 0:216148fa726d | 69 | TouchFadeOut(val); |
milspect18 | 0:216148fa726d | 70 | } |
milspect18 | 0:216148fa726d | 71 | else |
milspect18 | 0:216148fa726d | 72 | { |
milspect18 | 0:216148fa726d | 73 | if (val > 4) |
milspect18 | 0:216148fa726d | 74 | { |
milspect18 | 0:216148fa726d | 75 | TouchFadeIn(val); |
milspect18 | 0:216148fa726d | 76 | TouchFadeOut(val); |
milspect18 | 0:216148fa726d | 77 | } |
milspect18 | 0:216148fa726d | 78 | else |
milspect18 | 0:216148fa726d | 79 | { |
milspect18 | 0:216148fa726d | 80 | myRedLed = 1.00f; |
milspect18 | 0:216148fa726d | 81 | myGreenLed = 1.00f; |
milspect18 | 0:216148fa726d | 82 | myBlueLed = 1.00f; |
milspect18 | 0:216148fa726d | 83 | } |
milspect18 | 0:216148fa726d | 84 | } |
milspect18 | 0:216148fa726d | 85 | } |
milspect18 | 0:216148fa726d | 86 | |
milspect18 | 0:216148fa726d | 87 | |
milspect18 | 0:216148fa726d | 88 | void TouchFadeIn(float val) |
milspect18 | 0:216148fa726d | 89 | { |
milspect18 | 0:216148fa726d | 90 | for (float i = 1.00f; i > 0.00f; i -= 0.01f) |
milspect18 | 0:216148fa726d | 91 | { |
milspect18 | 0:216148fa726d | 92 | myRedLed = i; |
milspect18 | 0:216148fa726d | 93 | myGreenLed = i; |
milspect18 | 0:216148fa726d | 94 | myBlueLed = i; |
milspect18 | 0:216148fa726d | 95 | externalLight = i; |
milspect18 | 0:216148fa726d | 96 | wait_ms(val); |
milspect18 | 0:216148fa726d | 97 | } |
milspect18 | 0:216148fa726d | 98 | } |
milspect18 | 0:216148fa726d | 99 | |
milspect18 | 0:216148fa726d | 100 | |
milspect18 | 0:216148fa726d | 101 | void TouchFadeOut(float val) |
milspect18 | 0:216148fa726d | 102 | { |
milspect18 | 0:216148fa726d | 103 | for (float i = 0.00f; i < 1.00f; i += 0.01f) |
milspect18 | 0:216148fa726d | 104 | { |
milspect18 | 0:216148fa726d | 105 | myRedLed = i; |
milspect18 | 0:216148fa726d | 106 | myGreenLed = i; |
milspect18 | 0:216148fa726d | 107 | myBlueLed = i; |
milspect18 | 0:216148fa726d | 108 | externalLight = i; |
milspect18 | 0:216148fa726d | 109 | wait_ms(val); |
milspect18 | 0:216148fa726d | 110 | } |
milspect18 | 0:216148fa726d | 111 | } |
milspect18 | 0:216148fa726d | 112 | |
milspect18 | 0:216148fa726d | 113 | |
milspect18 | 0:216148fa726d | 114 | |
milspect18 | 0:216148fa726d | 115 | void AccelDemo() |
milspect18 | 0:216148fa726d | 116 | { |
milspect18 | 0:216148fa726d | 117 | float xAxisData = 1 - abs(accel.getAccX()); |
milspect18 | 0:216148fa726d | 118 | float yAxisData = 1 - abs(accel.getAccY()); |
milspect18 | 0:216148fa726d | 119 | float zAxisData = 1 - abs(accel.getAccZ()); |
milspect18 | 0:216148fa726d | 120 | |
milspect18 | 0:216148fa726d | 121 | myGreenLed = xAxisData; |
milspect18 | 0:216148fa726d | 122 | myRedLed = yAxisData; |
milspect18 | 0:216148fa726d | 123 | myBlueLed = zAxisData; |
milspect18 | 0:216148fa726d | 124 | |
milspect18 | 0:216148fa726d | 125 | wait_ms(100); |
milspect18 | 0:216148fa726d | 126 | } |
milspect18 | 0:216148fa726d | 127 | |
milspect18 | 0:216148fa726d | 128 | |
milspect18 | 0:216148fa726d | 129 | void morseCodeBlinker(char input[], float speed) |
milspect18 | 0:216148fa726d | 130 | { |
milspect18 | 0:216148fa726d | 131 | for (unsigned int i = 0; i < sizeof(input); i++) |
milspect18 | 0:216148fa726d | 132 | { |
milspect18 | 0:216148fa726d | 133 | if (input[i] == ' ') |
milspect18 | 0:216148fa726d | 134 | { |
milspect18 | 0:216148fa726d | 135 | WordSpace(speed); |
milspect18 | 0:216148fa726d | 136 | } |
milspect18 | 0:216148fa726d | 137 | else |
milspect18 | 0:216148fa726d | 138 | { |
milspect18 | 0:216148fa726d | 139 | SendLetter(input[i], speed); |
milspect18 | 0:216148fa726d | 140 | LetterSpace(speed); |
milspect18 | 0:216148fa726d | 141 | } |
milspect18 | 0:216148fa726d | 142 | } |
milspect18 | 0:216148fa726d | 143 | } |
milspect18 | 0:216148fa726d | 144 | |
milspect18 | 0:216148fa726d | 145 | |
milspect18 | 0:216148fa726d | 146 | void SendLetter(char input, float speed) |
milspect18 | 0:216148fa726d | 147 | { |
milspect18 | 0:216148fa726d | 148 | char lowerCaseLetter = tolower(input); |
milspect18 | 0:216148fa726d | 149 | |
milspect18 | 0:216148fa726d | 150 | switch (lowerCaseLetter) |
milspect18 | 0:216148fa726d | 151 | { |
milspect18 | 0:216148fa726d | 152 | case 'a' : |
milspect18 | 0:216148fa726d | 153 | Dot(speed); |
milspect18 | 0:216148fa726d | 154 | Dash(speed); |
milspect18 | 0:216148fa726d | 155 | break; |
milspect18 | 0:216148fa726d | 156 | case 'b' : |
milspect18 | 0:216148fa726d | 157 | Dash(speed); |
milspect18 | 0:216148fa726d | 158 | Dot(speed); |
milspect18 | 0:216148fa726d | 159 | Dot(speed); |
milspect18 | 0:216148fa726d | 160 | Dot(speed); |
milspect18 | 0:216148fa726d | 161 | break; |
milspect18 | 0:216148fa726d | 162 | case 'c' : |
milspect18 | 0:216148fa726d | 163 | Dash(speed); |
milspect18 | 0:216148fa726d | 164 | Dot(speed); |
milspect18 | 0:216148fa726d | 165 | Dash(speed); |
milspect18 | 0:216148fa726d | 166 | Dot(speed); |
milspect18 | 0:216148fa726d | 167 | break; |
milspect18 | 0:216148fa726d | 168 | case 'd' : |
milspect18 | 0:216148fa726d | 169 | Dash(speed); |
milspect18 | 0:216148fa726d | 170 | Dot(speed); |
milspect18 | 0:216148fa726d | 171 | Dot(speed); |
milspect18 | 0:216148fa726d | 172 | break; |
milspect18 | 0:216148fa726d | 173 | case 'e' : |
milspect18 | 0:216148fa726d | 174 | Dot(speed); |
milspect18 | 0:216148fa726d | 175 | break; |
milspect18 | 0:216148fa726d | 176 | case 'f' : |
milspect18 | 0:216148fa726d | 177 | Dot(speed); |
milspect18 | 0:216148fa726d | 178 | Dot(speed); |
milspect18 | 0:216148fa726d | 179 | Dash(speed); |
milspect18 | 0:216148fa726d | 180 | Dot(speed); |
milspect18 | 0:216148fa726d | 181 | break; |
milspect18 | 0:216148fa726d | 182 | case 'g' : |
milspect18 | 0:216148fa726d | 183 | Dash(speed); |
milspect18 | 0:216148fa726d | 184 | Dash(speed); |
milspect18 | 0:216148fa726d | 185 | Dot(speed); |
milspect18 | 0:216148fa726d | 186 | break; |
milspect18 | 0:216148fa726d | 187 | case 'h' : |
milspect18 | 0:216148fa726d | 188 | Dot(speed); |
milspect18 | 0:216148fa726d | 189 | Dot(speed); |
milspect18 | 0:216148fa726d | 190 | Dot(speed); |
milspect18 | 0:216148fa726d | 191 | Dot(speed); |
milspect18 | 0:216148fa726d | 192 | break; |
milspect18 | 0:216148fa726d | 193 | case 'i' : |
milspect18 | 0:216148fa726d | 194 | Dot(speed); |
milspect18 | 0:216148fa726d | 195 | Dot(speed); |
milspect18 | 0:216148fa726d | 196 | break; |
milspect18 | 0:216148fa726d | 197 | case 'j' : |
milspect18 | 0:216148fa726d | 198 | Dot(speed); |
milspect18 | 0:216148fa726d | 199 | Dash(speed); |
milspect18 | 0:216148fa726d | 200 | Dash(speed); |
milspect18 | 0:216148fa726d | 201 | Dash(speed); |
milspect18 | 0:216148fa726d | 202 | break; |
milspect18 | 0:216148fa726d | 203 | case 'k' : |
milspect18 | 0:216148fa726d | 204 | Dash(speed); |
milspect18 | 0:216148fa726d | 205 | Dot(speed); |
milspect18 | 0:216148fa726d | 206 | Dash(speed); |
milspect18 | 0:216148fa726d | 207 | break; |
milspect18 | 0:216148fa726d | 208 | case 'l' : |
milspect18 | 0:216148fa726d | 209 | Dot(speed); |
milspect18 | 0:216148fa726d | 210 | Dash(speed); |
milspect18 | 0:216148fa726d | 211 | Dot(speed); |
milspect18 | 0:216148fa726d | 212 | Dot(speed); |
milspect18 | 0:216148fa726d | 213 | break; |
milspect18 | 0:216148fa726d | 214 | case 'm' : |
milspect18 | 0:216148fa726d | 215 | Dash(speed); |
milspect18 | 0:216148fa726d | 216 | Dash(speed); |
milspect18 | 0:216148fa726d | 217 | break; |
milspect18 | 0:216148fa726d | 218 | case 'n' : |
milspect18 | 0:216148fa726d | 219 | Dash(speed); |
milspect18 | 0:216148fa726d | 220 | Dot(speed); |
milspect18 | 0:216148fa726d | 221 | break; |
milspect18 | 0:216148fa726d | 222 | case 'o' : |
milspect18 | 0:216148fa726d | 223 | Dash(speed); |
milspect18 | 0:216148fa726d | 224 | Dash(speed); |
milspect18 | 0:216148fa726d | 225 | Dash(speed); |
milspect18 | 0:216148fa726d | 226 | break; |
milspect18 | 0:216148fa726d | 227 | case 'p' : |
milspect18 | 0:216148fa726d | 228 | Dot(speed); |
milspect18 | 0:216148fa726d | 229 | Dash(speed); |
milspect18 | 0:216148fa726d | 230 | Dash(speed); |
milspect18 | 0:216148fa726d | 231 | Dot(speed); |
milspect18 | 0:216148fa726d | 232 | break; |
milspect18 | 0:216148fa726d | 233 | case 'q' : |
milspect18 | 0:216148fa726d | 234 | Dash(speed); |
milspect18 | 0:216148fa726d | 235 | Dash(speed); |
milspect18 | 0:216148fa726d | 236 | Dot(speed); |
milspect18 | 0:216148fa726d | 237 | Dash(speed); |
milspect18 | 0:216148fa726d | 238 | break; |
milspect18 | 0:216148fa726d | 239 | case 'r' : |
milspect18 | 0:216148fa726d | 240 | Dot(speed); |
milspect18 | 0:216148fa726d | 241 | Dash(speed); |
milspect18 | 0:216148fa726d | 242 | Dot(speed); |
milspect18 | 0:216148fa726d | 243 | break; |
milspect18 | 0:216148fa726d | 244 | case 's' : |
milspect18 | 0:216148fa726d | 245 | Dot(speed); |
milspect18 | 0:216148fa726d | 246 | Dot(speed); |
milspect18 | 0:216148fa726d | 247 | Dot(speed); |
milspect18 | 0:216148fa726d | 248 | break; |
milspect18 | 0:216148fa726d | 249 | case 't' : |
milspect18 | 0:216148fa726d | 250 | Dash(speed); |
milspect18 | 0:216148fa726d | 251 | break; |
milspect18 | 0:216148fa726d | 252 | case 'u' : |
milspect18 | 0:216148fa726d | 253 | Dot(speed); |
milspect18 | 0:216148fa726d | 254 | Dot(speed); |
milspect18 | 0:216148fa726d | 255 | Dash(speed); |
milspect18 | 0:216148fa726d | 256 | break; |
milspect18 | 0:216148fa726d | 257 | case 'v' : |
milspect18 | 0:216148fa726d | 258 | Dot(speed); |
milspect18 | 0:216148fa726d | 259 | Dot(speed); |
milspect18 | 0:216148fa726d | 260 | Dot(speed); |
milspect18 | 0:216148fa726d | 261 | Dash(speed); |
milspect18 | 0:216148fa726d | 262 | break; |
milspect18 | 0:216148fa726d | 263 | case 'w' : |
milspect18 | 0:216148fa726d | 264 | Dot(speed); |
milspect18 | 0:216148fa726d | 265 | Dash(speed); |
milspect18 | 0:216148fa726d | 266 | Dash(speed); |
milspect18 | 0:216148fa726d | 267 | break; |
milspect18 | 0:216148fa726d | 268 | case 'x' : |
milspect18 | 0:216148fa726d | 269 | Dash(speed); |
milspect18 | 0:216148fa726d | 270 | Dot(speed); |
milspect18 | 0:216148fa726d | 271 | Dot(speed); |
milspect18 | 0:216148fa726d | 272 | Dash(speed); |
milspect18 | 0:216148fa726d | 273 | break; |
milspect18 | 0:216148fa726d | 274 | case 'y' : |
milspect18 | 0:216148fa726d | 275 | Dash(speed); |
milspect18 | 0:216148fa726d | 276 | Dot(speed); |
milspect18 | 0:216148fa726d | 277 | Dash(speed); |
milspect18 | 0:216148fa726d | 278 | Dash(speed); |
milspect18 | 0:216148fa726d | 279 | break; |
milspect18 | 0:216148fa726d | 280 | case 'z' : |
milspect18 | 0:216148fa726d | 281 | Dash(speed); |
milspect18 | 0:216148fa726d | 282 | Dash(speed); |
milspect18 | 0:216148fa726d | 283 | Dot(speed); |
milspect18 | 0:216148fa726d | 284 | Dot(speed); |
milspect18 | 0:216148fa726d | 285 | break; |
milspect18 | 0:216148fa726d | 286 | } |
milspect18 | 0:216148fa726d | 287 | } |
milspect18 | 0:216148fa726d | 288 | |
milspect18 | 0:216148fa726d | 289 | void WordSpace(float speed) |
milspect18 | 0:216148fa726d | 290 | { |
milspect18 | 0:216148fa726d | 291 | wait(speed * 7); |
milspect18 | 0:216148fa726d | 292 | } |
milspect18 | 0:216148fa726d | 293 | |
milspect18 | 0:216148fa726d | 294 | void LetterSpace(float speed) |
milspect18 | 0:216148fa726d | 295 | { |
milspect18 | 0:216148fa726d | 296 | wait(speed * 3); |
milspect18 | 0:216148fa726d | 297 | } |
milspect18 | 0:216148fa726d | 298 | |
milspect18 | 0:216148fa726d | 299 | void Dash(float speed) |
milspect18 | 0:216148fa726d | 300 | { |
milspect18 | 0:216148fa726d | 301 | myRedLed = 0; |
milspect18 | 0:216148fa726d | 302 | myGreenLed = 0; |
milspect18 | 0:216148fa726d | 303 | myBlueLed = 0; |
milspect18 | 0:216148fa726d | 304 | wait(speed * 3); |
milspect18 | 0:216148fa726d | 305 | myRedLed = 1; |
milspect18 | 0:216148fa726d | 306 | myGreenLed = 1; |
milspect18 | 0:216148fa726d | 307 | myBlueLed = 1; |
milspect18 | 0:216148fa726d | 308 | wait(speed); |
milspect18 | 0:216148fa726d | 309 | } |
milspect18 | 0:216148fa726d | 310 | |
milspect18 | 0:216148fa726d | 311 | void Dot(float speed) |
milspect18 | 0:216148fa726d | 312 | { |
milspect18 | 0:216148fa726d | 313 | myRedLed = 0; |
milspect18 | 0:216148fa726d | 314 | myGreenLed = 0; |
milspect18 | 0:216148fa726d | 315 | myBlueLed = 0; |
milspect18 | 0:216148fa726d | 316 | wait(speed); |
milspect18 | 0:216148fa726d | 317 | myRedLed = 1; |
milspect18 | 0:216148fa726d | 318 | myGreenLed = 1; |
milspect18 | 0:216148fa726d | 319 | myBlueLed = 1; |
milspect18 | 0:216148fa726d | 320 | wait(speed); |
milspect18 | 0:216148fa726d | 321 | } |